设为首页 收藏本站
查看: 1045|回复: 0

[经验分享] golang 基础学习

[复制链接]

尚未签到

发表于 2018-9-20 11:19:54 | 显示全部楼层 |阅读模式
1.基本概念和语法


  •   golang中,如果一个名字的首字母大写,代表词名字将被导出。

  •   golang程序由包(package)组成,程序从main包开始运行,多个源文件可以属于同一个包,但是一个目录中只放置一个包。通常而言,目录名与包名一致。package main    定义一个包main。 导入代码包形式如下:

  

import "fmt  
import"math/rand"  或写为如下形式
  

  
import(
  "fmt"
  "math/rand"
  
)
  

  



  • 函数:定义变量时,变量名在类型之前,这与很多语言不一致。且x int,y int可以表示为x,y int。 定义一个函数形式如下:
  

func add(x int,y int)int{  return x+y
  
}
  

  

  函数可以返回多个值:
  

package main  
import "fmt"
  
func swap(x,y string)(string,string){
  return y,x
  
}
  

  
func main(){
  a,b:= swap("hello","world")
  fmt.Println(a,b)
  
}
  

  

注:返回值可以指定变量名,并且像变量一样使用。  

  

func (p myType) funcName (a,b int, c string) (r,s int){  return
  
}
  

  

func->关键字  
funcName->方法名
  
a,b int,c string->传入参数
  
r,s int->返回值
  
{}->函数体
  
函数的定义可以使用var:var m int = 10
  
或者,var i,j,k = 1,2,3
  
函数内变量赋值使用:=操作符
  函数也是一个类型,函数类型是go语言中一个重要的类型。
  

  

var recorder func(name string,age int,seniority int)(done bool)  
//后面所有符合这个函数类型的实现都可以赋给变量recorder,如下
  
recorder = func(name string,age int,seniority int)(done bool){
  //相应语句
  return
  
} 
  

  上述中,我们将一个函数字面上赋给了变量recorder,我们可以在一个函数类型的变量上直接应用调用表达式来调用它,如下:
  done := recorder("Harry",32,10)
  type Encipher func(planintext string)[]byte //type专门用于声明自定义类型,此处声明的
  Encipher实际上就是函数类型func(planintext string)[]byte的一个别名类型。


  • 数据类型:数据类型的转换表达式为T(v),含义将v转换为类型T。数据类型包含如下形式:
  

1.bool  2.string 3.int int8 int16 int32 int64  
4.uint uint8 unint16 uint32 uint64
  
5.uintptr 6.byte(等价于uint8)
  
7.rune(等价于int32,用于表示一个unicode code point)
  
8.float32,float64 9.complex64,complex128
  
注:使用constant来定义常量,constant Pi= 3.14
  


  • 控制语句:

    • for语句 golang中使用(且只使用)for来进行循序(没有while语句)

  

package main  func main(){
  sum := 0
  for i := 0;i < 10;i++{
  sum += i
  }
  //下述写法等价于C/C++等语言中的while语句
  for sum < 1000{
  sum + =sum
  }
  }
  注:for循环语句不需要()且{}是必须要使用的,if、switch语法处理与此一样。若使用无限循环,则可使用:
  for{
  }
  

  

  2. if语句,if语句可以在执行条件判断前带一个语句(这常被叫做if带上一个短语句),词语句中变量的生命周期在if语句结束后结束,如下。
  

package main  import(
  "fmt"
  "math/rand"
  )
  

  func main(){
  if n := rand.Intn(6);n

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-598799-1-1.html 上篇帖子: golang type 下篇帖子: 来自朝鲜的问候 golang入坑系列
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表