5.18笔记

44 阅读2分钟
Golang中的结构体
package main 
import "fmt"type user struct {
    name string
    password string 
 //定义方法如上   
}
​
func main() {
    a := user{name: "wang", password: "1024"}
    //初始化结构体方法一
    b := user{"wang", "1024"}
    //初始化结构体方法二
    c := user{name: "Wang"}
    //也可以这样单独命名
    
    //利用点方法定义
    var d user //定义一个结构体实例对象 d
    d.name = "wang"
    d.password = "1024"
    
    fmt.Println(a, b, c, d)//........
    fmt.Println(checkPassword(a, "1023"))//false
    
    //密码检查函数
    func checkPassword(u user, password string) bool{
        return u.password == password 
    }
    
}
Golang中的结构体方法

类似于C++中结构体函数,使其变成了一个类成员函数。

package main 
import "fmt"type user struct {
    name string
    password string  
}
func (u user) checkPassword(u user, password string) bool{
        return u.password == password 
    }//密码验证func (u *user) resetPassword(password string) bool{
         u.password = password 
    }//密码修改func main () {
    a := {"wang", "1024"}
    a.resetPassword("2048") //
    fmt.Println(a.checkPassword("2048"))    //true
}
Golang中的错误处理
package main 
import {
    "errors" //引入错误处理基本库
    "fmt" 
}
​
type user struct {
    name string
    password string
}
​
func findUser(users []user, name tring) (v *user, err error) {                                                             for _, u := range users {
                                                                  if u.name == name {                                             return &u, nil                                            }                                                         }
                                                              return nil, errors New("Not found")                           }
​
funck main() {
    err := findUser([]user{{"wang", "1024"}}, "wang")
    if err != nil {
        fmt.Println(err)
        return 
    }
    fmt.Println(u.name) //wang
    
    if u, err := findUser([]user{{"wang", "1024"}}, "li");err != nil {
        fmt.Println(err) //Not found
    return
        {
            else {
                fmt.Println(u.name)
            }
        }
 }
Golang中的字符串操作
a := "hello"
​
fmt.PrintIn(strings.Contains(a, "ll"))//true
fmt.Println(strings.Count(a,"l"))//2 字符出现次数
fmt.PrintIn(strings.HasPrefix(a,"he"))// true
fmt.Println(strings.HasSuffix(a,"llo"))// true
fmt.PrintIn(strings.Index(a,"l"))// 2 字符出现索引
fmt.Println(strings.Join([]string("he""llo"},"-"))//he-llo
fmt .PrintIn(strings.Repeat(a,2)) //hellohello 重复两次
fmt.PrintIn(strings.Replace(a,"e","E",-1)) //hEllo 更改
fmt.Println(strings.Split( "a-b-c","-")) //[a,b,c]剔除对应符号
fmt.PrintIn( strings.ToLower(a))//hello 转成小写
fmt.PrintIn( strings.ToUpper(a))//HELLO 转成大写
fmt.PrintIn(len(a))//5 打印字符串长度 
b:="你好"
fmt.PrintIn(len(b)) //6 注意如果字符串是中文时,一个汉字可能对应多个字符
Golang中的字符串格式化
type point strucy{
    x, y int
}
func main() {
    s := "hello"
    n := 123
    p := pointg{1, 2}
    fmt.Println(s, n)//hello 123
    fmt.Println(p) //{1 2}
    //这是第一种常用的打印方法 直接打印出变量内容 且末尾换行
    
    fmt.Printf("s=%v\n", s)//s=hello
    fmt.Printf("n=%v\n", n)//n=123
    fmt.Printf("p=%v\n", s)//p={1 2}
    fmt.Printf("p=%v+\n", p)//p={x:1 y:2} //打印的信息更详细
    fmt.Printf("p=%+#v\n", p)//p=main.point{x:1, y:2}
    
    f:= 3.141592653
    fmt.Println(f) //3.141592653
    fmt.Println("%2f\n", f) //3.14 取两位小数
}