《学习 Go 语言》学习心得
发布日期:2021-06-30 16:51:04
浏览次数:4
分类:技术文章
本文共 4550 字,大约阅读时间需要 15 分钟。
一、前言
对于Goland,会发现有很多和 C 语言
相似的地方,毕竟其开发组一个核心人物 肯·汤普森
,是 C 语言的核心重要开发者之一。
二、demo
前人云:不动笔墨不读书
作为程序员:“不敲代码不读书”1、变量常量
package mainimport "fmt"func main() { // 1.先声明,再赋值 var a int a = 1 fmt.Println(a) // 1 // 2.声明 + 赋值 b := 2 var score int = 148 fmt.Println(b, score) // 2 148 // 3.同时声明多个变量 var ( x int y int ) x = 192 y = 168 fmt.Println(x, y) // 192 168 // 4.声明 + 位数:8/16/32/64(默认根据本机硬件) var num int32 fmt.Println(num) // 0 // 5.bool var status bool status = true fmt.Println(status) // true // 6.string var s string s = "ITAEM" fmt.Println(s) // ITAEM // 7.const,常量,不可变值 const max int = 5 fmt.Println(max) // 5 // 8.声明赋值多个常量 const ( userName = "root" password = "123" ) fmt.Println(userName, password) // root 123 // 9、Printf var mimu int = 6 var word string = "骁龙835" fmt.Printf("小米%d 处理器:%s", mimu, word) // 小米6 处理器:骁龙835}/**注意点:① 声明变量,但未使用,程序会报错② 不同位数的变量运算将报错③ 常量不可变值 */
2、流程控制
package mainimport "fmt"func main() { // 1 if-else 条件判断 var flag bool = true if flag { fmt.Println("ok") } else { fmt.Println("fail") } // 2 for 循环 var total int = 0 for i := 1; i <= 100; i++ { total += i } fmt.Println(total) // 3 break for i := 1; i < 10; i++ { if i == 5 { break } fmt.Print(i) } fmt.Println() // 4 continue for i := 1; i < 10; i++ { if i%2 == 0 { continue } fmt.Print(i) } fmt.Println() // 5 range list := [] string{ "I", "T","A","E","M"} for k,v:= range list { fmt.Println(k,v) } // 6 switch choice := 2 switch choice { case 1: fmt.Println(1) case 2: fmt.Println(2) case 3: fmt.Println(3) default: fmt.Println("others") } // 7 输入 var input int fmt.Scanln(&input) fmt.Println(input) // 8 延时加载:类似栈 for i:=0;i<5;i++ { defer fmt.Print(i) // 4 3 2 1 0 }}
3、数组
package mainimport "fmt"func main() { // 1.一维 array var arr [100] int arr[0]=520 fmt.Println(arr[0]) // 2.二维 array arr2 := [3][2] int { [2]int{ 1,2},[2]int{ 3,4},[2]int{ 5,6}} fmt.Println(arr2[0][0]) // 3.1 array CRUD s0 := []int{ 0,1} // 3.2 增 s1 :=append(s0,2) fmt.Println(len(s1)) // 3.3 取 array s2 :=s0[0:2] fmt.Println(len(s2)) // 0,1 // 4.1 map CRUD team := map[string]string{ "ITAEM":"04008", "wTeam":"04009", // 逗号必须的 } // 4.2 显 fmt.Println(team["ITAEM"]) // 4.3 删 delete(team,"ITAEM") // 4.4 查 var room string var exist bool room,exist=team["ITAEM"] fmt.Println(room,exist) // 4.5 增、改 team["ITAEM"]="钟海楼04008" fmt.Println(team["ITAEM"])}
4、函数
package mainimport ( "fmt")func main() { var a=5 show(a) add(&a) show(a) fmt.Println(getTeamName()) fmt.Println(getTeam()) fmt.Println(getSum(1,2,3,4,5))}func show(a int) { // 打印输出 fmt.Println(a)}func add(a *int) { // 传引用,修改值 *a=*a+1}func getTeamName() string { // 单返回值 return "ITAEM"}func getTeam()(string,string) { // 多返回值 return "ITAEM","04008"}func getSum(arg ...int) int { // 变参 var total =0 for i := 0; i
5、包
package cunimport "fmt"func Show() { // 大写字母开头,可以导出 fmt.Println(666) // 666}
package mainimport "awesomeProject/cun"func main() { cun.Show()}
6、指针
package mainimport "fmt"func main() { var p *int fmt.Println(p) //var a int p = &a fmt.Println(p) // 0xc04204e088 fmt.Println(*p) // 0 *p=666 fmt.Println(a) // 666,成功修改了 a fmt.Println(*p) // 666}
7、结构体
package mainimport "fmt"// 1.1 structtype Student struct { name string age int}func main() { // 1.2 struct a := new(Student) a.age=18 a.name="rxy" fmt.Println(a) // &{rxy 18}}
8、接口
package mainimport ( "fmt")// 1.接口type Phone interface { call()}// 2.类型type NokiaPhone struct { }type IPhone struct { }// 3.实现func (nokiaPhone NokiaPhone) call() { fmt.Println("I am Nokia, I can call you!")}func (iPhone IPhone) call() { fmt.Println("I am iPhone, I can call you!")}func main() { var phone Phone phone = new(NokiaPhone) phone.call() phone = new(IPhone) phone.call()}
9、并发
package mainimport ("time""fmt")func ready(w string,sec int) { time.Sleep(time.Duration(sec)*time.Second) fmt.Println(time.Now(),w,"is ready!")}func main() { go ready("Tea",2) go ready("Coffee",1) fmt.Println("I am waiting...") time.Sleep(5*time.Second) // 没有这一句,程序立刻结束,将看不到预期的效果}
10、通讯
package mainimport ( "net" "fmt" "net/http" "io/ioutil")func main() { // 1 net:tcp、udp conn1,e :=net.Dial("tcp","120.79.197.130:8080") fmt.Println(conn1) fmt.Println(e ) // 2 http r,err := http.Get("https://blog.csdn.net/larger5") fmt.Println(ioutil.ReadAll(r.Body)) fmt.Println(err)}
三、其他
有空再更新 web服务端 方面的
Go 并发:
Do not communicate by sharing memory; instead, share memory by communicating. “不要以共享内存的方式来通信,相反,要通过通信来共享内存。”
转载地址:https://larger5.blog.csdn.net/article/details/80573099 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月12日 16时02分42秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
synchronized和CAS锁的区别【图文教程】
2019-04-30
配置nginx只允许域名访问,禁止ip访问【图文教程】
2019-04-30
Java代理【图文教程】_第1章_静态代理
2019-04-30
Java代理【图文教程】_第2章_jdk动态代理
2019-04-30
AOP面向切面编程【图文教程】_第1章
2019-04-30
AOP面向切面编程【图文教程】_第2章
2019-04-30
二叉树之前序、中序、后序和层次遍历【图文教程】
2019-04-30
java类的构成
2019-04-30
创建安装linux:centOS
2019-04-30
Xshell连接CentOS及安装hadoop的准备
2019-04-30
在linux上配置jdk和hadoop
2019-04-30
HDFS配置及常见命令
2019-04-30
xshell连接linux速度很慢或者连接一段时间后会自动断
2019-04-30
Hadoop Windows插件配置
2019-04-30