《学习 Go 语言》学习心得
发布日期:2021-06-30 16:51:04 浏览次数:3 分类:技术文章

本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:[汇编语言] 带有颜色的字符串显示(hello world 级别程序)
下一篇:在 SpringBoot 中使用 @EnableAsync、@Async 轻松实现异步任务

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月08日 12时26分46秒