前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

变量

作者头像
酷走天涯
发布2019-06-11 16:35:57
4410
发布2019-06-11 16:35:57
举报

记住以下几点

  • go的实体包括 变量 函数 结构体 和接口
  • go是静态类型的编程语言,所以在声明变量的时候必须指明类型
变量的声明
  • 方法1
代码语言:javascript
复制
var name string 
  • 方法2 直接赋值
代码语言:javascript
复制
package main

import (
    "flag"
    "fmt"
)

func main(){
  var name = flag.String("name","默认值","请输入一个值")
  fmt.Println(name)
}

猜猜结果

image.png

为什么不是xujie呢?因为flag.String()返回的是值的地址,那么我们怎么才能取到地址的值呢?

代码语言:javascript
复制
package main

import (
    "flag"
    "fmt"
)

func main(){
  var name = flag.String("name","默认值","请输入一个值")
  fmt.Println(*name)
}

image.png

*name 代表从地址name的地方去对应指针的值,这里有一个问题为什么不是xujie呢?

因为我们少调用了一个解析的数据的方法

代码语言:javascript
复制
package main
import (
    "flag"
    "fmt"
)
func main(){
  var name = flag.String("name","默认值","请输入一个值")
  flag.Parse()
  fmt.Println(*name)
}

image.png

  • 短变量声明
代码语言:javascript
复制
name:=12

go 语言具有类型推断能力,所以不需要进行声明,就可以直接将值赋值给变量,类型推断是一种在编译期能够自动解析表达式的能力

扩展
  • 取地址 &
代码语言:javascript
复制
package main
import (
  "fmt"
)

func main(){
  name:= 12
  fmt.Println(&name)
}

image.png

  • 短变量声明的优势
代码语言:javascript
复制
package main
import (
        "fmt"
)

func main(){
  name:= doSometing()
  fmt.Println(name)
}

func doSometing() interface{}{
    var name = "ABCDE"
    return name
}

如果我们要重构doSometing 里面的方法,name很简单 main方法中不用改动一句代码,如我们需要将name 改成age = 123

go 语言的类型推断能力,明显的提升了程序的灵活性,使得代码重构变的更加容易,同时不会给代码维护代码额外的负担,更不会损失程序的运行效率,同时也可以进行重声明

  • 重声明
代码语言:javascript
复制
package main
import (
    "fmt"
    "io"
    "os"
)

func main(){
    var err error
    n, err := io.WriteString(os.Stdout,"hello ") // 重声明
    fmt.Print(n)
    fmt.Print(err)
}

image.png

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 变量的声明
  • 扩展
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档