GoLang 入门指南
一、变量定义
var a = "initial"
b := "inital"
两种方法对变量进行定义。
二、常量定义
const con = 100
对常量进行定义。
三、if-else
if a%2 == 0 {
fmt.Println("a能被2整除!")
}else{
fmt.Println("a不能被2整除!")
}
GoLang中if-else使用和C#都相似,只是在判断框中不加括号。
四、for循环
var a int = 8
for n := 0; n < a; n++ {
if n%2 == 0 {
continue
}
fmt.Println(n)
}
- GoLang中for循环使用和C#都相似,只是在判断框中不加括号。
- 在for循环中也可以使用continue和break对循环进行控制。
五、switch
const a = 2
switch a {
case 1:
fmt.Println("one");
case 2:
fmt.Println("two");
}
const a = 2
switch {
case a == 1:
fmt.Println("one");
case a == 2:
fmt.Println("two");
}
GoLang中switch使用有两种方式:
第一种:和C#的使用相似。
第二种:直接将判断的对象放在case后面,好处是看起来更加直观明了。
注意:
- 在GoLang中switch语句case后不使用break,符合条件执行相应代码,代码执行结束后会直接结束,不会继续往下执行case。
- 在GoLang中switch判断的对象可以是任何类型。
六、数组
var a [5] int ;
for i := 0; i < 5; i++{
a[i] = i;
}
b := a
fmt.Println(b[2],len(a));
- GoLang中数组定义中元素的类型放在最后。
- len(数组名)获取数组长度。
- 数组名[元素下标] 可以对元素进行操作。
七、切片
s := make([]int ,3)
for i := 0; i < 3; i++{
s[i] = i;
}
a := make([]int ,len(s))
copy(a,s)
s = append(s,3)
fmt.Println(s[0:])
fmt.Println(a[0:])
- 切片相当于可以随时变换长度的数组。
- 定义切片 make([ ]类型,长度)。
- copy( )进行复制切片。
- 切片可以用append( )追加元素。
八、map
m := make(map[int] string)
m[1] = "one"
m[2] = "two"
r, ok := m[3]
delete(m,1)
fmt.Println(m[1],m[2],ok,r)
- 定义map对象 make(map[键类型]值类型)。
- 用delete删除元素。
- 用 键:值来获取map元素。
九、range
range 对象——在对象中抽取一个随机的元素。
十、函数
func add (a int , b int) int{
var c = a+b
return c
}
func main() {
var a = 10
b := 20
c := add(a,b)
fmt.Println(c)
}
- 函数定义 返回函数类型写在最后。
- 调用函数时和C#一样。
十一、指针
func add ( a *int){
*a += 2
}
func main() {
var a = 10
add(&a)
fmt.Println(a)
}
- 指针定义:数据类型* 。
- 把指针作为参数,调用函数时要求参数类型匹配(& 参数)。
注意:
- 对用指针座位参数可以对数据进行修改,用数据作为参数不能对原数据进行修改。
十二、结构体、结构体方法
type user struct{
name string
password string
}
func (u *user) resetpassword (password string){
u.password = password
}
func main() {
a := user{name:"chang",password:"123456"}
a.resetpassword("123")
fmt.Println("name:",a.name,"password:",a.password)
}
- 结构体定义:type 结构体名 struct{}。
- 结构体方法定义:在普通方法的func后加(结构体名 结构体类型)。
- 结构体方法调用:结构体对象.结构体方法。
十三、字符串
a := "hello"
fmt.Println(strings.Contains(a,"ll"))
fmt.Println(strings.Count(a,"l"))
fmt.Println(strings.Index(a,"l"))
fmt.Println(strings.Join([]string{"he","llo"},"_"))
fmt.Println(strings.Repeat(a,2))
fmt.Println(strings.Split("a-b-c","-"))
fmt.Println(len(a))
- strings.Contains():字符串1是否包含字符串2。
- strings.Count():字符串中字符个数。
- strings.Index():字符串中字符下标。
- strings.Join():连接两个字符串。
- strings.Repeat():字符串重复。
- strings.Split():字符串分割。
- len():字符串长度。
注意:
- 使用上述方法需要导入“strings”
十四、字符串格式化
type points struct{
x,y int
}
func main() {
a := points{2,2}
fmt.Printf("a=%v\n",a)
fmt.Printf("a=%+v\n",a)
fmt.Printf("a=%#v\n",a)
}
在GoLang中用 “%v” 能打印出各种类型的变量,用 “%+v”打印详细结果,用 “%#v”打印更加详细的结果。
十五、时间处理
func main() {
now := time.Now()
t1 := time.Date(2023,7, 25, 22, 23 ,36 ,0 ,time.UTC)
fmt.Println(now.Format("2006-01-02 15:04:05"))
diff :=now.Sub(t1)
fmt.Println(diff)
}
- 当前时间获取:time.Now()。
- 时间定义:time.Date(年,月,日,时,分,秒,毫秒,time.UTC)
- 打印时间格式化:fmt.Println(now.Format("2006-01-02 15:04:05"))。
- 时间间隔使用Sub()函数。
注意:
- 需要使用时间处理时必须导入“time”