Go语言基础

Go语言笔记

目录

Go语言笔记

环境搭建

Go的一些语法

变量

常量


计算机软件经历了数十年的发展,形成了多种学术流派,有面向过程编程、面向对象编程、函数式编程、面向消息编程等,这些思想究竟孰优孰劣,众说纷纭。

除了OOP外,近年出现了一些小众的编程哲学,Go语言对这些思想亦有所吸收。


例如,Go语言接受了函数式编程的一些想法,支持匿名函数与闭包。

再如,Go语言接受了以Erlang语言为代表的面向消息编程思想,支持goroutine和通道,并推荐使用消息而不是共享内存来进行并发编程。总体来说,Go语言是一个非常现代化的语言,精小但非常强大。


Go 语言最主要的特性:

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

特色:

  • 简洁、快速、安全
  • 并行、有趣、开源
  • 内存管理、数组安全、编译迅速

不多bb,开始教程。

环境搭建

1.Go环境配置:

下载:https://golang.google.cn/dl/

无脑下一步,环境变量直接自动怼好。

2.测试Go环境:

创建文件 test.go 编写测试代码:

package main

import "fmt"

func main(){

	fmt.Println("hello,World!")

}

在命令行运行:run test.go  直接就成功了!

3.IDEA配置Go开发环境:

1.环境:下载Go插件,安装并重启;

2.创建项目:创建项目>go,然后选择项目目录,直到创建完成;

3.运行项目:创建如上图的go文件,启动类的package、启动方法必须为main,不然不会识别,因此无法启动;

注意:项目创建完成后需要在IDEA中配置GOPATH,在设置中搜索即可,将配置改为你的项目目录。

至此IDEA的入门项目就可以运行了。

Go的一些语法

这部分的内容主要在有java语法基础之上而写,因此部分和java类似的部分就不赘述了。

行分隔符:默认不用写分隔符,如果将多行代码写在一行时,可以用 ; 来分隔(不推荐)。


关键字 自定义标识符不能和下面关键字、预定义标识符冲突。

breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

预定义标识符:36 个

appendboolbytecapclosecomplexcomplex64complex128uint16
copyfalsefloat32float64imagintint8int16uint32
int32int64iotalenmakenewnilpanicuint64
printprintlnrealrecoverstringtrueuintuint8uintptr

变量

变量定义:var 变量 类型

//声明单个变量
var a int
//声明多个变量
var a,b int

//变量定义并赋值
var a int = 20

//当然在定义时不指定类型,直做赋值,它将会自动提供类型,如:
var a=1        //将默认为int

//使用:=快速定义变量而不用使用var,(只允许在函数体内这样写)
a:=1                    //声明了一个int变量a,值=1
a,b,c,d:=1,2,3,"hhh"    //合法的,类型自动推断


//注意,函数内部的变量必须被使用,否则将报错


//交换变量值
a, b = b, a
_ 表示一个只写变量,即可以被赋值,但无法读值,应用场景如下:
//某函数
func test(){
    a,b,c:=1,2,3
    return a,b,c
}


//正常的调用
a1,a2,a3 = test()

//如果想忽略第一个值,只取b,c的返回值
_,a2,a3 =test()

变量指针:基本类型的变量都指向一个数据,内存中变量的存储如下图:

引用类型的则是这样:这里的aa、bb、cc其实就是指针

&变量名:返回变量在内存的地址,如&a;

常量

https://www.runoob.com/go/go-constants.html

go web 入门

package main

import (
	"net/http"
)


//主程序
func main() {
	Server()
}


//请求监听
func Server(){
	http.HandleFunc("/",serverHandle)
	_ = http.ListenAndServe(":8088", nil)
}

//请求处理函数
func serverHandle(writer http.ResponseWriter, request *http.Request) {
	_, _ = writer.Write([]byte("hello"))
}

请求:localhost:8088/ 就能响应hello 了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值