Go语言基础 | 青训营笔记

100 阅读3分钟

一、 1.概念: 2.特点 高性能、高并发;学习简单;大部分情况下不用借助第三方库;完善的工具链;静态链接;快速编译;跨平台;垃圾回收 3.使用go语言的公司 4.字节跳动选择go语言的原因 最初使用的python,由于性能问题转换成了go,c++不太适合在线web业务,早期团队非Java背景,性能比较好,部署简单,学习成本地,内部RPC和HTTP框架的推广 二、开发环境 三、go的基本语法 1.mai包。程序的入口包 2.import "fmt" 导入format包,格式输出字符串 3.运行·程序 go run go run example/01-hello/main.go hello world go build example/01-hello/main.go ./main hello world 4.go的变量类型 package main import ( "fmt" "math" )

func main(){ var a="initial" var b,c int =1,2 var d=true var e float64 f :=float32(e) g :=a+ "foo" fmt.Println(a,b,c,d,e,f) fmt.Println(g)

const s string ="constant"
const h=500000000
const i=3e20/h
fmt.Println(s,h,i,math.Sin(h),math.Sin(i))

} go语言里面字符串是内置类型,可以直接通过+号去连接,也可以使用=去比较字符串 两种声明变量的方式: ①var 变量名=变量 ②变量名 := 常量没有确定的类型,它会跟据上下文自动确定常量类型 5.golang里面的if else package main import "fmt" func main(){

if 7%2==0 {
	fmt.Println("7 is even")
}else
{
	fmt.Printf("7 is odd")
}

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")
}

} 与c和c++不同的是,if后面不用写括号,如果写了,保存以后编译器会自动把括号去掉 6.golang里面的循坏 7.golang里的switch结构 package main

import( "time" "fmt" )

func main(){ a :=2 switch a{ case 1: fmt.Println("one") case 2: fmt.Println("two") default: fmt.Println("other") }

t :=time.Now()
switch{
case t.Hour()<12:
	fmt.Println("It is before noon")
default:
	fmt.Println("It is afternoon")
}

}、 golang里面的switch可以是任意变量类型,功能更加强大 8.golang里面的数组 9.切片,可变长度的数组 10.map,最常使用的,遍历时无序 11.range 遍历时使用,可以使代码更加的简洁 12.函数,可以返回多个值 13.指针,对常用的参数进行修改 14.结构体, 15,结构体方法 结构体是将另个或者多个任意类型的命名变量组合在一起的聚合数据类型,如果一个结构体的成员变量名称是首字母大些的,那么这个变量是可导出的(即在其他包可以访问到)。 一个结构体可以同时包含可导出和不可导出的成员变量命名结构体类型s不可以定义一个拥有相同结构体类型s的成员变量,也就是一个聚合类型不可以包含它自己。但是s中可以定义一个s的指针类型,即*s。如下: type B struct { value int //Next B //错误 Next *B //正确 }1 如果结构体的所有成员变量都可以比较,那么这个结构体是可以比较的。两个结构体的比较可以使用==或者!=。 16。错误处理,可以清晰地知道哪个函数有错误,用if else来处理错误 17.字符串操作 18.字符串格式化 19.json处理 20.时间处理