1.配置插件
我下载的是VSCode,VSCode的安装方式相对而言比较简单,这里不多叙述
1.1.Go环境插件
微软针对于用Vs Code 进行Go语言的开发也是有提供对应的语言支持插件的,同样的点击左侧菜单栏最后一项管理扩展,在搜索框中输入Go ,选中结果列表第一项,点击install安装
1.3.安装Go本身的开发工具
打开vscode,打开ctrl+shift+p后我们在这个输入框中输入go:install,下面会自动搜索相关命令,我们选择Go:Install/Update Tools这个命令,进行安装即可。可能会遇到一些下载缓慢不成功的问题,可以在网上搜索其解决方案。
2.基本语法
2.1基本类型
数据类型 在 Go 编程语言中,数据类型用于声明函数和变量。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
Go 语言按类别有以下几种数据类型:
-
布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
-
数字类型 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。
-
字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。
-
派生类型: 包括:
- (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 :=(在“:=”的左边没有新变量出现)
(未完结)