go基础语法(2)| 青训营

60 阅读2分钟

指针n *int 函数的变量 *n表指针 在使用函数时需要写成&n。 结构体与c类似 type user struct{ name string psaaword string } var d user//申明结构体变量 d.name = "wang" d.password = "1024" 1、func checkPassword(u user,password string)bool{ return u.password == password } 2、func(u *user)resetPassword(password string){ u.password == password } 错误处理 导包“errors” errors.New是一个函数,接受一个字符串参数 text,并返回一个实现了 error 接口的错误值。这个错误值表示一个简单的错误,其中的 text 字符串描述了错误的信息。 func findUser(users []user,name string)(v *user,err error){ for_,u :=range users{ if u.name==name{ return &u,nil } } return nil,errors.New("not found")//若不存在,返回错误not found。 }//判断是否存在对应的姓名与密码。 func main(){ u,err :=findUser([user{{"wang","1024"}},"wang"]) if err !=nil{ fmt.println(err) return } fmt.println(u.name) } 字符串操作 strings.Contains(,"")用于判断一个字符串是否包含另一个子字符串,返回值为布尔类型。 strings.Count(,"")用于计算一个字符串中某个子字符串出现的次数。且大小写是敏感的,如果遇到大小写不敏感的子字符串计数,可以使用 strings.Count(strings.ToLower(s), strings.ToLower(substr)) 来转换为小写后再进行计数。 strings.HasPrefix(,"")和strings.HasSuffix(,"")分别判断字符串a的开头、结尾是否为字符串b。 strings.Join([]string{"he","llo"},"-")//he-llo将字符串用特定的字符连接起来。 字符串格式化 %v输出内容,%+v更详细,%#v会输出函数结构体名(最详细)。 strings.Join:

  1. 导入了"fmt"和"strings"包,用于打印输出和字符串处理。
  2. 创建了一个二维切片board,表示井字板。每个元素都是一个字符串,初始值为"_",表示空格。
  3. 通过索引操作给井字板上的不同位置赋值,模拟玩家在井字板上打上"X"和"O"的过程。
  4. 使用循环遍历二维切片board,并使用strings.Join函数将每一行的元素用空格连接成字符串,然后使用fmt.Printf打印出来。 uint(i)是将整数i转换为无符号整数类型uintuint是Go语言中表示无符号整数的类型。 在循环体内,我们使用位运算符<<来计算2的幂次方,并将结果赋值给当前元素。具体来说,1 << uint(i)表示将数字1左移i位,相当于计算2的i次方。 二维切片: img :=make([][]uint8,dy)//大小为:dy行 for y :=0;y<dy;y++{ img[y] = make([]uint8,dx)//一行大小为dx } 函数的闭包:闭包形成的条件是一个函数内部定义了另一个函数,并且内部函数引用了外部函数的变量。当外部函数执行完毕后,内部函数仍然可以访问和操作外部函数的变量,形成了闭包。 eg:func adder() func(int) int { sum := 0 return func(x int) int { sum += x return sum } }