GO语言基础语法笔记 丨 青训营笔记

57 阅读3分钟

package main //导入main包 import ( "fmt" “math” )//fmt包,用于输入和输出字符串、格式化字符串; math用于输入数字类型

func main() //主函数 { //输出函数 fmt.Println("。。。")用于输出

//定义变量
方式一:
var a ="sadaf"//字符
var b int = 1 //数字
var c = true //布尔
var e float64 //声明变量类型
方式二:
f := float32(e)// 变量+类型+值
g :=a+"sff"//直接声明,并且进行字符拼接


//常量: 可自动根据上下文确定类型
const s string = "asfas" 
const h = 5000

//if语句:条件不需要括号
if num:=10; num<9{
	fmt.Println(num, "is no 10")
}
else if ...
else...

//循环:只有for循环,不需要括号
for j :=7; j<10 ; j++{
	。。。。
}

//switch语句:条件不加括号,条件可以是任何类型,不需要加break
//switch语句还可以在寻找上加条件
t :=time.Now()
switch {
	case t.hour<12:
		结果1
	default:
		结果2
}
 
//数组
var a [10] int // 定义1 
b := [2]  int{1,2} //定义2: 数组变量名 := [num]  类型{值}
var twoD [][] int 

//切片
s := make([] string, 3) // s := make([] 类型, 长度)
copy(a,b)//把b复制到a
append(a, 'a')// 切片a后加入a
fmt.Println(s[2:5]) //输入第2到第4个字符

//map(python中的字典);  遍历map时,数据是随机的
m :=make(map [string] int )// 此处key为string,value为int
//输入ky对
m["one "] = 1 
r, ok := m["two"]//判断m中是否有two。ok = false

//range: 遍历
range(m)//便利上述字典		

//函数: 变量在前,类型在后
func add (a int, b int ) int{
	...
}		
func existm map[string]sting, k string(v string, ok bool){
	.......
	return v, ok //一般返回2个,一个是值,一个是错误信息
}
// 指针:p *int

//结构体 
type user struct{
	name string
	password string
}
定义:var d user
访问元素: d.name = 
	
//错误处理,一般在定义函数返回值时设置错误返回
import{
"error"	
}
func find (uses []user, name string) (v *user, err error)

//字符串操作
fmt.Println(strings.Contains(a, "ll"))                // 是否含有字符
fmt.Println(strings.Count(a, "l"))                    // 含有字符数
fmt.Println(strings.HasPrefix(a, "he"))               // 是否含有前缀
fmt.Println(strings.HasSuffix(a, "llo"))              // 是否含有后缀
fmt.Println(strings.Index(a, "ll"))                   // 字符第一次出现的位置
fmt.Println(strings.Join([]string{"he", "llo"}, "-")) // 插入字符
fmt.Println(strings.Repeat(a, 2))                     // 重复输入字符
fmt.Println(strings.Replace(a, "e", "E", -1))         // 替换字符
fmt.Println(strings.Split("a-b-c", "-"))              // 删除对于字符
fmt.Println(strings.ToLower(a))                       // 换成小写
fmt.Println(strings.ToUpper(a))	//换成大写
len(a)   //求字符长度(文字占3个长度)

//fmt操作
s := "hello"
n := 123
p := point{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", p)  // p={1 2}    //%v只输出对应值
fmt.Printf("p=%+v\n", p) // p={x:1 y:2}  // %+v输出整个point类型定义
fmt.Printf("p=%#v\n", p) // p=main.point{x:1, y:2} //%#v输出整个函数字段

f := 3.141592653
fmt.Println(f)          // 3.141592653
fmt.Printf("%.2f\n", f) // 3.14 // %.n输入n位小数

//json :数列化,输出的是16进制编码
	输入字符是需要转化
import (
"encoding/json"
"fmt"
)
buf, err := json.Marshal(a)
fmt.Println(buf)         // [123 34 78 97...]
fmt.Println(string(buf)) // {"Name":"wang","age":18,"Hobby":["Golang","TypeScript"]}

//数字解析:把字符转成数字
import{ “strconv”}
n, _ := strconv.ParseInt("111", 10, 64) //(字符,进制,操作位)
n2, _ := strconv.Atoi("123")  //自动解析

//进程信息
import{
	"os"
	"os/exec"
}
fmt.Println(os.Args)           // [/var/folders/8p/n34xxfnx38dg8bv_x8l62t_m0000gn/T/go-build3406981276/b001/exe/main a b c d]  //获取系统信息
fmt.Println(os.Getenv("PATH")) // /usr/local/go/bin...   ///获取环境变量
fmt.Println(os.Setenv("AA", "BB"))		//获取环境变量