Go 语言入门指南:基础语法和常用特性解析 | 豆包MarsCode AI刷题

97 阅读3分钟

1.配置插件

​ 我下载的是VSCode,VSCode的安装方式相对而言比较简单,这里不多叙述

1.1.Go环境插件

​ 微软针对于用Vs Code 进行Go语言的开发也是有提供对应的语言支持插件的,同样的点击左侧菜单栏最后一项管理扩展,在搜索框中输入Go ,选中结果列表第一项,点击install安装

image.png

1.3.安装Go本身的开发工具

打开vscode,打开ctrl+shift+p后我们在这个输入框中输入go:install,下面会自动搜索相关命令,我们选择Go:Install/Update Tools这个命令,进行安装即可。可能会遇到一些下载缓慢不成功的问题,可以在网上搜索其解决方案。

image.png

2.基本语法

2.1基本类型

数据类型 在 Go 编程语言中,数据类型用于声明函数和变量。

数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

Go 语言按类别有以下几种数据类型:

  1. 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。

  2. 数字类型 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。

  3. 字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。

  4. 派生类型: 包括:

    • (a) 指针类型(Pointer)
    • (b) 数组类型
    • (c)结构化类型(struct)
    • (d) Channel 类型
    • (e) 函数类型
    • (f) 切片类型
    • (g) 接口类型(interface)
    • (h) Map 类型

2.2基础语法

2.2.1 变量

//可变变量 
var a int 
var b,c int = 1,2
//不可变变量const声明
const s string = "abc"

2.2.2 if-else

if 7%2 == 0 {
		fmt.Println("7 is even")
	} else {
		fmt.Println("7 is odd")
	}

	if 8%4 == 0 {
		fmt.Println("8 is divisible by 4")
	}

	if num := 9; num < 0 {
		fmt.Println(num, "is negative")
	} else if num < 10 {
		fmt.Println(num, "has 1 digit")
	} else {
		fmt.Println(num, "has multiple digits")
	}

2.2.3 for

for j := 7; j < 9; j++ {
		fmt.Println(j)
	}

	for n := 0; n < 5; n++ {
		if n%2 == 0 {
			continue
		}
		fmt.Println(n)
	}

2.2.4 switch

a := 2
	switch a {
	case 1:
		fmt.Println("one")
	case 2:
		fmt.Println("two")
	case 3:
		fmt.Println("three")
	case 4, 5:
		fmt.Println("four or five")
	default:
		fmt.Println("other")
	}

2.2.5 array

var a [5]int
var b [2][3]int 

2.2.6 slice

s := make([]string,3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println(s) // [a b c]

2.2.7 map

m := make(map[string]int)
m["one"] = 1
m["two"] = 2
fmt.Println(m)           // map[one:1 two:2]

r, ok := m["unknow"]
fmt.Println(r, ok) // 0 false 没有的元素r为0返回false
r, ok = m["one"]
fmt.Println(r, ok) // 1 true 

2.2.8 func

func add(a int, b int) int { //参数变量名在前
	return a + b
res := add(1, 2)
fmt.Println(res) // 3
}

2.2.9 point


func add2(n int) {
	n += 2
}

func add2ptr(n *int) {
	*n += 2
}

func main() {
	n := 5
	add2(n)
	fmt.Println(n) // 5
	add2ptr(&n)
	fmt.Println(n) // 7只有指针才能改变形参的值
}

2.2.10 struct

type user struct {
	name     string
	password string
}
b := user{"wang", "1024"}
c := user{name: "wang"}
c.password = "1024"
var d user
d.name = "wang"
d.password = "1024"

2.2.11 string

func main() {
	a := "hello"
	fmt.Println(strings.Contains(a, "ll"))                // true
	fmt.Println(strings.Count(a, "l"))                    // 2
	fmt.Println(strings.HasPrefix(a, "he"))               // true
	fmt.Println(strings.HasSuffix(a, "llo"))              // true
	fmt.Println(strings.Index(a, "ll"))                   // 2
	fmt.Println(strings.Join([]string{"he", "llo"}, "-")) // he-llo
	fmt.Println(strings.Repeat(a, 2))                     // hellohello
	fmt.Println(strings.Replace(a, "e", "E", -1))         // hEllo
	fmt.Println(strings.Split("a-b-c", "-"))              // [a b c]
	fmt.Println(strings.ToLower(a))                       // hello
	fmt.Println(strings.ToUpper(a))                       // HELLO
	fmt.Println(len(a))                                   // 5
	b := "你好"
	fmt.Println(len(b)) // 6
}

2.2、变量初始化

在声明变量时,自动对变量对应的内存区域进行初始化操作。每个变量会初始化其类型的默认值,例如:

  • 整型和浮点型变量的默认值为 0 和 0.0。
  • 字符串变量的默认值为空字符串。
  • 布尔型变量默认为 bool。
  • 切片、函数、指针变量的默认为 nil。

注意:如果 a 已经被声明过,但依然使用:=时编译器会报错,(遇到的一个问题)代码如下:

// 声明 a 变量
var a int
// 再次声明并赋值
a := 10

编译报错如下:

no new variables on left side of :=(在“:=”的左边没有新变量出现)

(未完结)