前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go基础入门

go基础入门

作者头像
大话swift
发布2019-07-12 15:03:30
3230
发布2019-07-12 15:03:30
举报
文章被收录于专栏:大话swift大话swift
之前瞥了一眼go但是语法诡异,随放弃。机缘又被忽悠学了点go今天就给大家分享一下go的基础入门历程……

作为有编程基础的人入门基础语法是很容易的但是这次的go真的是有些别扭啊,前后折腾了有半月有余问题关键是有几个地方与已有的语言不同,比如goroutine struct 方法 chan 函数 并发而其余的来说都还容易理解。在个人学习go的过程中其实语法层面不难理解和接受,这半个多月有大概1/3的时间用于理解goroutine 线程锁 多线程访问 资源同步 ? channel。为什么呢?go是以高并发著称,而并发带来的问题如何互斥资源共享避免死锁,对于语法来说大家很快就能入门而线程?预防死锁和多线程通信资源共享是提升自我的关键和一门技术的核心……

然后就是又遇见了runtime这个狗屁,这个是很多静态语言具备的黑魔法。作为iOS开发我想大家对于这个再熟悉不过啦。可以从更深层次的去理解和压榨语言的性能……

好了我们来体验一下go

1 hello,word

2 变量声明

3 常见数据类型

4 写个函数

语言入门hello,world必不可少

代码语言:javascript
复制
package main
import "fmt"
func main() {
  fmt.Println("Hello,WOrld")
}

从上面我们提取到有效信息如下:package import main func这个几个关键信息

1 pakcage是作为包名

2 import导入依赖包

3 func声明一个函数(为啥function叫做函数而不叫方法呢?后续自会明了)

变量声明

对于go这类高级语言声明变量变得异常简单,我们来看看常规的方式

代码语言:javascript
复制
var name  = "Jack"
  var age  = 30

除此之外还有简易的方式

代码语言:javascript
复制
name , age,addr := "Jack",30,"CN"

也许你对这种方式感觉不自在但是这就是语法,其实最关键是还是因为有了强大的类型推导能力才使得各种语法糖变得异常强大,也是各种代码更加适合人们书写与阅读---例如上面的粒子我们很容的就定义书写出简易代表一个人信息的语句

基础数据类型

代码语言:javascript
复制
  var a = int(2)
  var b = float64(23)
  var c = "Hello, World"
  fmt.Println(a, b, c)
  
  //array
  var d = []int{1, 2, 3,}
  
  //slice
  var dd = d[1:]
  var ddd = d[1:2]
  
  for index, value := range d {
    fmt.Print("index:", index, "value:", value)
  

函数预览

代码语言:javascript
复制
……
operation(12, 3, add)
  operation(12, 3, sub)
}
func sub(a int, b int) int {
  return a - b
}
func add(a int, b int) int {
  return a + b
}
func operation(a int, b int, category func(a int, b int) int) (result int) {
  result = category(a, b)
  return result
}

在现代话的编程语言中func同样是数据类型,可以作为参数传递,通过上面的粒子我们看到,对于一个函数我们可以使用不同的函数作为参数来获取不同的数据操作结果(俗称策略)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

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

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

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