`
stephen830
  • 浏览: 2964811 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[开心学go语言]2、简单了解语法

 
阅读更多

 

 

 

第一章:开心学Go语言:部署篇

每一个新语言的产生必然会产生语法的变更。

在我印象中,c#和java 白热化的竞争,着实带给我们很多好处,譬如两者的语法像的一塌糊涂,所以从c#屌丝转换为java屌丝只需熟悉熟悉各种库的用法即可。

然后做习了php 这时突然转到Go语言,就有很大压力了。

我的建议是,先了解最最基本和常用的语法。在实际学习和演练中慢慢了解其他语法,不要一下子把Go的语法全部掌握,一个是时间耗费的太长,另外一个是会导致你前学后忘。

接下来我们进入正式学习篇。

一、变量申明

php是弱类型语言,一般一个货色拿过来可以直接赋值如 $a=1 $a=”你好“

c#和java是强类型语言,一般变量必须申明类型,如果不知道那至少得申明为 object

Go语言是超强类型语言,怎么个超强法?超强到int16 和int32 它都认为不能互相进行相加

所以要熟悉GO 必须先知道怎么申明变量

在Go中,是使用var 来做申明的,和javascript的申明方法 很类似。

譬如

package main
import (
    "fmt"  //这个包别告诉我你忘了
)
func main() {
    var a int   //申明一个变量 a 是int型的
    a = 3
    fmt.Printf("number is %d", a) //打印出 a的值
}

以上有几个注意点: var a int 代表申明a是int型的变量

如果你特别懒,不像申明,想像php那样直接使用 也不是不可以

package main

import (
	"fmt"
)
func main() {
	a := 3 //好习惯要养成,最好是申明类型
	fmt.Printf("nunber is %d", a)
}

语法注意点:

1、代码不要分号。其实GO语言是要分号的,但是Go编译器在编译的时候自动会帮你添加分号。如果你加了分号,其实等于每句代码后有两个分号。就出错了

2、c#中是 int a=3.GO语言反过来写,一开始不会太适应。慢慢就好了。

var a int = 3

var a int 换行 写a=3

a:=3

以上三句 都一样

 

下面有个常见点:大部分出现在你在windows编写代码时出现

package main

import (
	"fmt"
)
func main() {
	fmt.Printf("我是一个程序员")

}

 

你会发现编译出错,那是因为你在windows随手 创建的txt文本是unicode编码,而GO语言必须使用Utf8编码,所以你必须把该txt另存为无Bom的utf8文件(记住是无bom的utf8 文件,仅仅是utf8是不行的。bom是windows特有的,人家都不太鸟微软的)

 

二、类型转换

Go语言的类型转换不是一般的麻烦

如:

a:=1

var b string

这时想把 a转换为字符串 和b 想加。那么就需要把a转换为string型。

注意:Go语言类型转换 是有专门的转换方法的,强制转换在Go中根本行不通

package main

import (
	"fmt"
	"strconv" //这个包就是专用来干 类型转换的事情的
)

func main() {
	a := 100
	var b string
	b = "开心学Go语言"
	b = b + strconv.Itoa(a) + "天"   //strconv.Itoa就是把整形转换为字符串
	fmt.Printf(b)

}

 

strconv.Itoa就是把整形转换为字符串,注意它仅仅只能干整形转换为字符串这样的事。

要转行Float 必须使用 strconv.FormatFloat 函数

这里再体现一个GO语言的超强类型

package main

import (
	"fmt"
	"strconv" //这里也要注意,如果下面程序中没有使用到 这个包,编译会出错 
)

func main() {
	a := 100
	var c int32 = 20
	d := a + int(c)  //注意这里,int32和int不能互相相加 必须转换
	fmt.Printf("相加结果是%d", d)

}

 

这种语法限制很好,虽然写起来很繁琐,但是程序员性能会很高。不像PHP,人家都说PHP写出来的程序很”脏“,到处有未使用的变量和定义函数,从一定程度上是消耗了性能,虽然有时我们肉眼看不出来。

这里顺便讲一个php要点

往往我们在写函数时,需要加个判断

if ( ! function_exists( 'somefunction' ) ):
  function somefunciont()
  {
  ......
   }
endif;

 

这样做的好处是,防止函数重定义。这在公共平台中允许大家一起写函数插件时很有用。

 

三、数组

GO的数组定义还是很清晰的。

如:

 

package main

import (
	"fmt"
)
func main() {
	a := [5]int{1, 2, 3, 4, 5} //手动赋值
	fmt.Print(a)
}

 

如果不需要手动赋值,要动态赋值,那么可以这样

package main

import (
	"fmt"
)
func main() {

	var a [5]int   //注意这里不能写成 a:=[5]int   
	a[0] = 1
	a[1] = 2
	fmt.Print(a)
}

 

这里代表,初始化一个数组a,里面有5个元素,动态赋值第一个和第二个元素值为1和2,

GO编译器会自动把 剩余的3个元素 赋值为 0,0,0

这里介绍一个数据切片功能,一看就能懂。

package main

import (
	"fmt"
)

func main() {

	var a [5]int
	a[0] = 1
	a[1] = 2
	fmt.Print(a[1:3]) //输出 a[1] 和 a[3] 两个值
	fmt.Print(a[:3])  // 输出  a[0] a[1] a[2]  注意不包括 a[3]
	fmt.Print(a[1:])  //输出  a[1] a[2] a[3] a[4] 
}

 

好了,基本语法 先到这。大家肯定要讲,还有很多啊。如if 判断,for循环等等。

其实不用着急学这个。下一章我们来做一个 简单的函数,顺手就学到了这些基本语法。

注意:还是那句话,一次不要学太多。 尤其是像if for循环。现在学它干嘛?又没有上手开始写代码。

数组是要先学的。任何语言,上手首先要学的就是数组。这叫跳跃式学习方法。

好,敬请大家等待一章,不会很久哦。。。 下一章带领大家写几个我们常用的应用函数。

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    汇编语言语法学习 汇编语言语法学习

    汇编语言语法学习 汇编语言语法学习 汇编语言语法学习 汇编语言语法学习 汇编语言语法学习

    go语言中文教程及手册.pdf

    《go语言中文教程及手册》包含了语言结构、基础语法、数据类型、语言变量、语言常量以及运算符等内容的介绍,可以让你快速进阶为go语言编程高手。简洁,一句废话没有,对于初学者可以让大家快速掌握GO语言!

    学习GO语言中文版

    学习GO语言中文版,轻松学习GO语言!包含基础语法等的讲解。

    GO语言语法学习

    GO基础学习的资源要求,你可以从中学习到最基本的语法。

    自然语言理解中的语法学 语义学 和语用学

    这是经过查找资料之后总结的关于自然语言理解中的语法学、语义学和语用学的内容!共同进步!

    零基础学Go语言:轻松入门并发编程!.zip

    本资源为大学生提供了Go语言的入门教程,通过简单易懂的语言和实际案例,讲解了Go语言的基本概念、语法和编程技巧。 适用人群:对编程感兴趣的大学生,想要学习网络服务和并发编程的学生。 使用场景及目标:适用于...

    Go语言实战-高清版

    Go语言实战-高清版。本书是写给已经有一定其他语言编程经验,并且想学习 Go 语言的中级开发者的。我们写这 本书的目的是,为读者提供一个专注、全面且符合语言习惯的视角。我们同时关注语言的规范和 实现,涉及的...

    TINY 扩充语言的语法分析

    华南师范大学 本资源包括TINY扩充语言的语法分析的实验报告,编译原理附录B和TINY扩充语言的语法分析代码.实验报告中说明了该实验的完成步骤. 扩充的语法规则有:实现while、do while、for语句和求余计算式子,具体...

    go语言基础语法代码整合

    适合于刚学go语言或者对go语言0基础的小伙伴去学习代码。每个语法的代码都是一个单独的go文件,使大家能够更好更清晰的去学习或巩固go语言的基础语法篇。解压导入项目即可运行。

    vim go 语法高亮

    GO语言V1.3.3自带的VIM相关插件,包括语法高亮等,详见README文档

    语言学纲要语法的组合规则和聚合规则PPT课件.pptx

    语言学纲要语法的组合规则和聚合规则PPT课件.pptx

    Go语言实战

    Go语言结合了底层系统语言的能力以及现代语言的高级特性,旨在降低构建简单、可靠、高效软件的门槛。本书向读者提供一个专注、全面且符合语言习惯的视角。Go语言实战同时关注语言的规范和实现,涉及的内容包括语法、...

    pspice语法 学习教程 电路仿真语言

    pspice语法 学习教程 电路仿真语言 pspice语法 学习教程 电路仿真语言 pspice语法 学习教程 电路仿真语言 pspice语法 学习教程 电路仿真语言

    学习用递归下降算法和YACC工具实现TINY语言的语法分析器

    (2)TINY语言的抽象语法树节点的数据类型的定义与说明; (3)TINY语言的语法分析器源程序的阅读与注释; (4)TINY语言的语法分析器的YACC输入文件阅读与注释; (5)编译并测试TINY语言的语法分析器;

    Rust 语言基础语法大全.zip

    Rust 语言基础语法大全.zipRust 语言基础语法大全.zipRust 语言基础语法大全.zipRust 语言基础语法大全.zipRust 语言基础语法大全.zipRust 语言基础语法大全.zipRust 语言基础语法大全.zipRust 语言基础语法大全....

    go 学习(成长之路) 这是一本学习Go 语言的教程,设计基础语法、redis、m-fw-go-learning.zip

    go 学习(成长之路) 这是一本学习Go 语言的教程,设计基础语法、redis、m-fw-go-learning

    go 学习(成长之路) 这是一本学习Go 语言的教程,设计基础语法、redis、mongo、mysql、restfu.zip

    go 学习(成长之路) 这是一本学习Go 语言的教程,设计基础语法、redis、mongo、mysql、restfu

    Learngo:适合新手学习 Go 语法的开源项目

    Learngo:适合新手学习 Go 语法的...学习一门编程语言最好的方法就是动手写,该仓库拥有 1000 多个 Go 语法的问题,让你可以跟着练并附有答案 ———— 项目地址:https://ddl.ink/EvP github加速:https://ddl.ink/dl/

    Go语言程序设计 epub

    书中从如何获取和安装Go语言环境,以及如何建立和运行Go程序开始,逐步介绍了Go语言的语法、特性以及一些标准库,内置数据类型、语句和控制结构,然后讲解了如何在Go语言中进行面向对象编程,Go语言的并发特性,如何...

Global site tag (gtag.js) - Google Analytics