func new(Type) *Type
func make(t Type, size ...IntegerType) Type
其中Type代表某一个数据类型。
从定义中可以看出,new返回的是指向Type的指针。 make直接返回的是Type类型值。
new只有一个Type参数,Type可以是任意类型数据。 make可以有多个参数,其中第一个参数与new的参数相同,但是只能是slice,map,或者chan中的一种。对于不同类型,size参数说明如下:
一个结构体正常序列化过后是什么样的呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package main import ( "encoding/json" "fmt" ) // Product 商品信息 type Product struct { Name string ProductID int64 Number int Price float64 IsOnSale bool } func main() { p := &Product{} p.Name = "Xiao mi 6" p.IsOnSale = true p.Number = 10000 p.Price = 2499.00 p.ProductID = 1 data, _ := json.Marshal(p) fmt.Println(string(data)) } //结果 { "Name" : "Xiao mi 6" , "ProductID" :1, "Number" :10000, "Price" :2499, "IsOnSale" :true} |
2. 何为Tag,tag就是标签,给结构体的每个字段打上一个标签,标签冒号前是类型,后面是标签名
1 2 3 4 5 6 7 8 9 10 11 | // Product _ type Product struct { Name string `json: "name" ` ProductID int64 `json: "-" ` // 表示不进行序列化 Number int |
select 是 Go 中的一个控制结构,类似于用于通信的 switch 语句。每个 case 必须是一个通信操作,要么是发送要么是接收。
select 随机执行一个可运行的 case。如果没有 case 可运行,它将阻塞,直到有 case 可运行。一个默认的子句应该总是可运行的。
Go 编程语言中 select 语句的语法如下:
以下描述了 select 语句的语法:
select 语句应用演示:
switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上至下逐一测试,直到匹配为止。
switch 语句执行的过程从上至下,直到找到匹配项,匹配项后面也不需要再加 break。
switch 默认情况下 case 最后自带 break 语句,匹配成功后就不会执行其他 case,如果我们需要执行后面的 case,可以使用 fallthrough 。
Go 编程语言中 switch 语句的语法如下:
switch var1 { case val1: ... case val2: ... default: ... }
变量 var1 可以是任何类型,而 val1 和 val2 则可以是同类型的任意值。类型不被局限于常量或整数,但必须是相同的类型;或者最终结果为相同类型的表达式。
您可以同时测试多个可能符合条件的值,使用逗号分割它们,例如:case val1, val2, val3。
流程图:
你可以在 if 或 else if 语句中嵌入一个或多个 if 或 else if 语句。
Go 编程语言中 if...else 语句的语法如下:
if 布尔表达式 1 { /* 在布尔表达式 1 为 true 时执行 */ if 布尔表达式 2 { /* 在布尔表达式 2 为 true 时执行 */ } }
你可以以同样的方式在 if 语句中嵌套 else if...else 语句
嵌套使用 if 语句:
以上代码执行结果为:
a 的值为 100 , b 的值为 200 a 值为 : 100 b 值为 : 200
-----------------------------
判断用户密码输入:
package main import"fmt" func main(){ var a int var b int fmt.Printf("请输入密码: \n") fmt.Scan(&a) if a == 5211314 { fmt.Printf("请再次输入密码:") fmt.Scan(&b) if b == 5211314 { fmt.Printf("密码正确,门锁已打开") }else{ fmt.Printf("非法入侵,已自动报警") } }else{ fmt.Printf("非法入侵,已自动报警") }
if 语句 后可以使用可选的 else 语句, else 语句中的表达式在布尔表达式为 false 时执行。
Go 编程语言中 if...else 语句的语法如下:
if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } else { /* 在布尔表达式为 false 时执行 */ }
If 在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则执行 else 语句块。
流程图如下:
使用 if else 判断一个数的大小:
以上代码执行结果为:
a 不小于 20 a 的值为 : 100
-------------------------------------
if 语句由布尔表达式后紧跟一个或多个语句组成。
Go 编程语言中 if 语句的语法如下:
if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ }
If 在布尔表达式为 true 时,其后紧跟的语句块执行,如果为 false 则不执行。
流程图如下:
使用 if 判断一个数变量的大小:
以上代码执行结果为:
a 小于 20 a 的值为 : 10
Go 语言的 goto 语句可以无条件地转移到过程中指定的行。
goto 语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。
但是,在结构化程序设计中一般不主张使用 goto 语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。
goto 语法格式如下:
goto label; .. . label: statement;
goto 语句流程图如下:
在变量 a 等于 15 的时候跳过本次循环并回到循环的开始语句 LOOP 处:
以上实例执行结果为:
a的值为 : 10 a的值为 : 11 a的值为 : 12 a的值为 : 13 a的值为 : 14 a的值为 : 16 a的值为 : 17 a的值为 : 18 a的值为 : 19
Go 语言的 continue 语句 有点像 break 语句。但是 continue 不是跳出循环,而是跳过当前循环执行下一次循环语句。
for 循环中,执行 continue 语句会触发for增量语句的执行。
continue 语法格式如下:
continue;
continue 语句流程图如下:
在变量 a 等于 15 的时候跳过本次循环执行下一次循环:
以上实例执行结果为:
a 的值为 : 10 a 的值为 : 11 a 的值为 : 12 a 的值为 : 13 a 的值为 : 14 a 的值为 : 16 a 的值为 : 17 a 的值为 : 18 a 的值为 : 19
Go 语言中 break 语句用于以下两方面:
break 语法格式如下:
break;
break 语句流程图如下:
在变量 a 大于 15 的时候跳出循环:
以上实例执行结果为:
a 的值为 : 10 a 的值为 : 11 a 的值为 : 12 a 的值为 : 13 a 的值为 : 14 a 的值为 : 15
nge
cui***nge1995@gmail.com
寻找到 100 以内的所有的素数: