Go语言初学者之学习笔记

在google开发时,开发人员为了解决当时在Google开发上遇到的一些问题,go语言应运而生。当时遇到了编译慢,大量C++、python、java等待吗,花费时间长,服务器数目太过庞大等问题。

以下是笔者在接触go语言时所记录的一些笔记与归纳。

Go 作为一门语言致力于使事情简单化。它并未引入很多新概念,而是聚焦于打造一门简单的语言,它使用起来异常快速并且简单。其唯一的创新之处是 goroutines 和通道。Goroutines 是 Go 面向线程的轻量级方法,而通道是 goroutines 之间通信的优先方式。Go语言在以下方面具有着相当不错的表现:高效并发编程,没有异常处理和函数多返回值以及编译速度快等。Go支持多范式,如程序,功能和并发。它的语法传统上来自C语言,但它已经做了很多修改,以改进简单性和安全性等功能。Go语言的性能与 Java 或 C++相似,比python快了将近30倍。当前我们使用 Go 编写的最大微服务的编译时间只需 6 秒。相较于 Java 和 C++呆滞的编译速度,Go 的快速编译时间是一个主要的效率优势,并且go语言具有一个强大的生态系统。Go 有着强大的工具支持,面向 Redis、RabbitMQ、PostgreSQL、Template parsing、Task scheduling、Expression parsing 和 RocksDB 的稳定的库。Go 的生态系统相比于 Rust、Elixir 这样的语言有很大的优势。因此笔者开始使用go语言,并在此做一个简单的入门。

  1. Hello World
    学习一种编程语言,毫无疑问,都是从“Hello World”开始入门。
package main

import "fmt"

func main() {
	fmt.Println("Hello, world!")
}

笔者在初识这段代码时,粗略地将Println中的P小写了,因此导致了程序报错。并且笔者在刚开始运行这段代码时使用了错误的包,导致程序无法运行,main()这个函数所在的包的名称必须命名为main。“fmt"这个包可视化了输入和输出的函数。像其他语言一样Println是换行打印,Print是直接打印。

  1. 结构体
    变量的结构可以在开头进行一个总体的声明。采用驼峰命名法,首字母根据访问控制大写或者小写。struct声明和初始化格式采用多行。
type User struct{
	Username string //用户名
	Id int //学号
	Age int //年龄
}
  1. 接口
    命名规则与结构体规则相似。单个函数的结构名以“er”作为后缀
type register interface{
	Regist (p [] byte) (n int, err error)
}
  1. 关键字
    break default fune interface select
    case defer Go map Struct
    chan else Goto package Switch
    const fallthrough if range Type
    continue for import return Var

  2. 注释
    分为单行注释和多行注释。Go语言提供给/**/此类C++风格注释。也可以用//来注释。结构体和接口都应有注释。

  3. var
    定义变量,然后进行赋值。

	var num int
	num=3

使用格式为 var + 变量名 + 类型(包括int, string等,这里不进行展开),如果没有赋值,例如上述代码,若未声明num=3,则默认num为0。可以不直接声明类型。

	var name="ABC"
	var id=1025712

省略var进行简单定义,使用:=

	name := "ABC"
	id := 1025712
  1. 定义常量
    常量是个标识符,在程序运行时不会被修改
const Website = "www.baidu.com"
const PI = 3.1415926
  1. 特殊常量
    iota是一个特殊常量,是一个可以被编译器修改的常量。
const(
	A=iota
	B=iota
	C=iota
)

每运行一次iota,则累加一,初始值为0。

const(
	A=iota
	B //1
	C //2
	D="abc" //3
	E  //4
	F=100 //5  
	G //6
	H=iota  //7
)
const(
	I=iota //0
)
  1. 特殊字符转义
    \n换行
    \t制表符
    \r回车

  2. 逻辑运算符

&& 与逻辑运算符。
||或逻辑运算符
!非逻辑运算符

a := true
b := false
c := true
res1 := a && b
res2 := a || b
res3 := a && b && c
res4 := a || b || c

  1. 输入与输出(IO)

使用fmt包
Print() //打印
Printf() //格式化打印
Println() //打印之后换行
格式化打印占位符:
%w 原样输出
%T 打印类型
%t boll类型
%s 字符串
%f 浮点
%d 10进制的整数
%b 2进制的整数
%o 8进制
%c 打印字符
%p 打印地址

输入主要指读取键盘内容:
fmt包下scan类型函数

fmt.Scanln(&A,&B)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值