前言: 最近组内要试水区块链,初步方案定为使用fabirc来弄,而fabric的智能合约就是用go写的,借此机会正好学下go,本文也是从零开始,将go的基本语法,结构体,函数,方法,接口,并发等以小demo的方式进行讲解,有的地方会对比java加深记忆


go简介

go又称golang 是由Google开发,于2009年11月开源的一种服务端编程语言,go 很简洁,高效,支持并发 ,总之值得一看—— 维基百科

安装

  • go环境: go官网下载 安装就是一路next
  • ide: liteIDE官网下载 我用的是 liteIDE ,下载压缩包之后直接解压使用,怎么用就自己学习下很简单的

hello world

学习每种编程语言都是从hello world开始的,本次也是

package main

import (
"fmt"
) func main() {
fmt.Println("hello world")
}

直接在ide中运行输出:hello world

一个.go文件通常会包括

  • 声明包: package
  • 引入包: import
  • 变量/常量: var /const
  • 函数: func

声明包

使用 packge 关键字来声明一个包,每个 Go 程序都由包构成的

引入包

使用 import 关键字来导入所需的包,go语言强制规定,导入的包必须被使用否则编译不过

import "fmt"
import "math"
//更简便的写法
import (
"fmt"
"math"
)

函数

使用 func 关键字来声明一个函数

常用结构:

	func methodName(var1 int,var2 int)  int{
.....
return xxx
}

注意:与java不同的地方

  • 入参的结构:变量名在前,类型在后,如(var1 int,var2 int)java是类型在前,变量名在后
  • 返回值:函数的返回值在参数的后面java中是在方法名之前

一个.go只能声明一个main函数,否则编译不过

helloworld demo 的main函数没有入参也没有返回值,所以可以省略

变量

使用 var 声明一个变量列表,跟函数的参数列表一样,类型在最后;

var 也是可以定在包内和函数内;

如果定义的变量没有赋值则默认赋初始值:

  • 数值类型为 0
  • 布尔类型为 false
  • 字符串为 ""
var isfalse bool
var istrue bool = true func main() {
var num int
fmt.Println(num, isfalse, istrue)
}

定义多个及初始值

如果初始化值已存在,则可以省略类型;变量会从初始值中获得类型


var isfalse, istrue, x = true, false, "chenmingyu" func main() {
fmt.Println(isfalse, istrue, x)
}

当两个或多个变量类型相同时,只需要写最后一个变量的类型,如:x int, y int 可以写成 x, y int

函数中,简洁赋值语句 := 可在类型明确的地方代替 var 声明,只能在函数内使用,所以函数外只能用var

func main() {
var1 := "mingyu"
fmt.Println("say hello", var1)
}

常量

使用const 关键字来声明常量,如:

const word = "hello go"

func main() {
fmt.Println(word)
}

函数的返回值

go 语言函数支持返回任意数量的返回值,如:

func transform(x, y string) (string, string) {
return y, x
}
func main() {
a, b := transform("say", "hello")
fmt.Println(a, b)
}

可见性规则

在go中使用首字母大小写来决定该常量、变量、结构体、函数、接口是否可以被外部包调用

  • 首字母小写就相当于java中的 private
  • 首字母大写就相当于java中的 public
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Abs(12))
//小写报错 undefined: math.abs
fmt.Println(math.abs(12))
}

###结束
**初识 go 语言系列**
- [x] 初始 go 语言
- [ ] 初识 go 语言:语法及类型
- [ ] 初识 go 语言:方法,接口及并发

注意:本篇文中针对go环境的安装及ide的安装提供了网址,下载后可自行安装,liteIDE的使用可以自行学习很简单的

学习一门新的编程语言。最重要的就是写,看三遍不如自己码一遍,所以开始吧

学习网站:https://tour.go-zh.org

关注公众号

初识 go 语言的更多相关文章

  1. 初识 go 语言:方法,接口及并发

    目录 方法,接口及并发 方法 接口 并发 信道 结束语 前言: go语言的第四篇文章,主要讲述go语言中的方法,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示例,可直接运行. 方法,接 ...

  2. 初识 go 语言:数据类型

    目录 数据类型 指针 结构体 数组 切片 切片的方法 映射 函数闭包 结束语 前言: go语言的第三篇文章,主要讲述go语言中的数据类型,包括指针,结构体,数组,切片,映射,函数闭包等,每个都提供了示 ...

  3. 初识 go 语言:语法

    目录 语法 for 循环 if 语句 switch 语句 defer 语句 defer 栈 结束 前言: go语言系列第二篇,主要讲述go语言的语法,如循环,if判断,swich语句,defer语句, ...

  4. 《Go并发编程实战》读书笔记-初识Go语言

    <Go并发编程实战>读书笔记-初识Go语言 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在讲解怎样用Go语言之前,我们先介绍Go语言的特性,基础概念和标准命令. 一. ...

  5. 第二百五十八节,Tornado框架-逻辑处理get()方法和post()方法,初识模板语言

    Tornado框架-逻辑处理get()方法和post()方法,初识模板语言 Tornado框架,逻辑处理里的get()方法,和post()方法 get()方法,处理get方式的请求post()方法,处 ...

  6. 01_初识C语言

    第一章 - 初识C语言 基本了解C语言的基础知识,对C语言有一个大概的认识. 每个知识点就是简单认识,不做详细讲解. 1. 什么是C语言? C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的 ...

  7. 《玩转D语言系列》一、通过四个版本的 Hello Word 初识D语言

    对于D语言,相信很多朋友还没听说过,因为它还不够流行,跟出自名门的一些语言比起来也没有名气,不过这并不影响我对它的偏爱,我就是这样的一种人,我喜欢的女孩子一定是知己型,而不会因为她外表,出身,学历,工 ...

  8. 第一、初识C语言

    1·C语言强大而灵活,如python,LISP,FORTRAN,Perl,Logo,BASIC,PASACAL的编译器和解释器都是C语言编写的. 2·C语言的指针错误往往难以察觉,但这恰好告诉我们,一 ...

  9. 初识C语言

    C语言是开发iOS软件的基础. 一.C语言简介 1.      简史 1)          C语言于1972年发明,首次使用是用于重写UINX操作系统(UNIX以前主要是用汇编语言写的,它奠定了操作 ...

随机推荐

  1. 免费试用MongoDB云数据库 (MongoDB Atlas)教程

    众所周知,MongoDB包括社区版和企业版,但不止如此,MongoDB公司还有MongoDB Atlas:Database as a Service. MongoDB Atlas delivers t ...

  2. Windows系统XAMPP安装Moodle教程

    一.安装工具下载: 系统环境: Operating System: Windows 10 Enterprise 64-bit (10.0, Build 17134) 集成软件: XAMPP Versi ...

  3. centos7个人shell编写环境

    一.配置存放文件/root/wang 存放常用的文件/root/wang/shell 存放练习的shell文件/root/wang/succeed_shell 存放有用shell文件/root/bak ...

  4. js 学习之路5:使用js在网页中添加水印

    示例: <!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="te ...

  5. 虚拟机 与 host主机,无法ping通的问题

    这个写的比较简单,先做以下记录 centos虚拟机安装到别的电脑上,因为linux中的程序需要向外有网络互通,所以需要重新设置ip 通过 ifconfig eth4 192.168.0.20  bro ...

  6. 删除网络中的本地连接*x等

    1.运行-regedit 打开注册表 定位到 HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control Network {4D36E972-E325-11 ...

  7. Saltstack_使用指南04_数据系统-Grains

    1. 主机规划 Grains文档 https://docs.saltstack.com/en/latest/topics/grains/index.html 注意事项 修改了master或者minio ...

  8. LeetCode算法题-Binary Tree Tilt(Java实现)

    这是悦乐书的第263次更新,第276篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第130题(顺位题号是563).给定二叉树,返回整棵树的倾斜度.树节点的倾斜被定义为所有 ...

  9. Mac系统编译FFmpeg

    转载请标明来源:我不是掌柜的博客 前言 维基百科解释:FFmpeg是一个开源软件,可以运行音频和视频多种格式的录影.转换.流功能,包含了libavcodec – 这是一个用于多个项目中音频和视频的解码 ...

  10. 阿里巴巴开源的Asynchronous I/O Design and Implementation

    Motivation I/O access, for the most case, is a time-consuming process, making the TPS for single ope ...