和c一样 和py一样。 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。   可以使用内建函数 make 也可以使用 map 关键字来定义 Map: 如果不初始化 map,那么就会创建一个 nil map。nil map 不能用来存放键值对 注:删除:delete(countryCapitalMap, “France”) 类型转换用于将一种数据类型的变量转换为另外一种类型的变量。Go 语言类型转换基本格式如下: type_name 为类型,expression 为表达式。 如float32(5)等。 在上面的例子中,我们定义了一个接口Phone,接口里面有一个方法call()。然后我们在main函数里面定义了一个Phone类型变量,并分别为之赋值为NokiaPhone和IPhone。然后调用call()方法,输出结果如下:  结构体
 
package main  import "fmt"  type Books struct {    title string    author string    subject string    book_id int }   func main() {      // 创建一个新的结构体     fmt.Println(Books{"Go 语言", "www.runoob.com", "Go 语言教程", 6495407})      // 也可以使用 key => value 格式     fmt.Println(Books{title: "Go 语言", author: "www.runoob.com", subject: "Go 语言教程", book_id: 6495407})      // 忽略的字段为 0 或 空    fmt.Println(Books{title: "Go 语言", author: "www.runoob.com"}) } 
{Go 语言 www.runoob.com Go 语言教程 6495407} {Go 语言 www.runoob.com Go 语言教程 6495407} {Go 语言 www.runoob.com  0}结构体指针,函数传参
 
package main  import "fmt"  type Books struct {    title string    author string    subject string    book_id int }  func main() {    var Book1 Books        /* Declare Book1 of type Book */    var Book2 Books        /* Declare Book2 of type Book */     /* book 1 描述 */    Book1.title = "Go 语言"    Book1.author = "www.runoob.com"    Book1.subject = "Go 语言教程"    Book1.book_id = 6495407     /* book 2 描述 */    Book2.title = "Python 教程"    Book2.author = "www.runoob.com"    Book2.subject = "Python 语言教程"    Book2.book_id = 6495700     /* 打印 Book1 信息 */    printBook(&Book1)     /* 打印 Book2 信息 */    printBook(&Book2) } func printBook( book *Books ) {    fmt.Printf( "Book title : %sn", book.title)    fmt.Printf( "Book author : %sn", book.author)    fmt.Printf( "Book subject : %sn", book.subject)    fmt.Printf( "Book book_id : %dn", book.book_id) } 
Book title : Go 语言 Book author : www.runoob.com Book subject : Go 语言教程 Book book_id : 6495407 Book title : Python 教程 Book author : www.runoob.com Book subject : Python 语言教程 Book book_id : 6495700切片
 
package main  import "fmt"  func main() {    var numbers []int    printSlice(numbers)     /* 允许追加空切片 */    numbers = append(numbers, 0)    printSlice(numbers)     /* 向切片添加一个元素 */    numbers = append(numbers, 1)    printSlice(numbers)     /* 同时添加多个元素 */    numbers = append(numbers, 2,3,4)    printSlice(numbers)     /* 创建切片 numbers1 是之前切片的两倍容量*/    numbers1 := make([]int, len(numbers), (cap(numbers))*2)     /* 拷贝 numbers 的内容到 numbers1 */    copy(numbers1,numbers)    printSlice(numbers1)    }  func printSlice(x []int){    fmt.Printf("len=%d cap=%d slice=%vn",len(x),cap(x),x) } /* len=0 cap=0 slice=[] len=1 cap=1 slice=[0] len=2 cap=2 slice=[0 1] len=5 cap=6 slice=[0 1 2 3 4] len=5 cap=12 slice=[0 1 2 3 4] */range
 
package main import "fmt" func main() {     //这是我们使用range去求一个slice的和。使用数组跟这个很类似     nums := []int{2, 3, 4}     sum := 0     for _, num := range nums {         sum += num     }     fmt.Println("sum:", sum)     //在数组上使用range将传入index和值两个变量。上面那个例子我们不需要使用该元素的序号,所以我们使用空白符"_"省略了。有时侯我们确实需要知道它的索引。     for i, num := range nums {         if num == 3 {             fmt.Println("index:", i)         }     }     //range也可以用在map的键值对上。     kvs := map[string]string{"a": "apple", "b": "banana"}     for k, v := range kvs {         fmt.Printf("%s -> %sn", k, v)     }     //range也可以用来枚举Unicode字符串。第一个参数是字符的索引,第二个是字符(Unicode的值)本身。     for i, c := range "go" {         fmt.Println(i, c)     } } 
sum: 9 index: 1 a -> apple b -> banana 0 103 1 111map
 /* 声明变量,默认 map 是 nil */ var map_variable map[key_data_type]value_data_type  /* 使用 make 函数 */ map_variable := make(map[key_data_type]value_data_type)
 
package main  import "fmt"  func main() {     var countryCapitalMap map[string]string /*创建集合 */     countryCapitalMap = make(map[string]string)      /* map插入key - value对,各个国家对应的首都 */     countryCapitalMap [ "France" ] = "巴黎"     countryCapitalMap [ "Italy" ] = "罗马"     countryCapitalMap [ "Japan" ] = "东京"     countryCapitalMap [ "India " ] = "新德里"      /*使用键输出地图值 */      for country := range countryCapitalMap {         fmt.Println(country, "首都是", countryCapitalMap [country])     }      /*查看元素在集合中是否存在 */     capital, ok := countryCapitalMap [ "American" ] /*如果确定是真实的,则存在,否则不存在 */     /*fmt.Println(capital) */     /*fmt.Println(ok) */     if (ok) {         fmt.Println("American 的首都是", capital)     } else {         fmt.Println("American 的首都不存在")     } } 
France 首都是 巴黎 Italy 首都是 罗马 Japan 首都是 东京 India  首都是 新德里 American 的首都不存在语言类型转换
 type_name(expression)
接口实例
 
package main  import (     "fmt" )  type Phone interface {     call() }  type NokiaPhone struct { }  func (nokiaPhone NokiaPhone) call() {     fmt.Println("I am Nokia, I can call you!") }  type IPhone struct { }  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()  } I am Nokia, I can call you! I am iPhone, I can call you!
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)