当前位置: 首页 > news >正文

Go 基础(非常基础)

 1 // package main 和 main 函数
 2 package main
 3 func main() {}
 4 
 5 //每一个.go文件都需要有 package 关键词,并且声明在文件顶部
 6 package pkgName
 7 
 8 // import 用来导入依赖包
 9 import "name"
10 
11 // 常量定义 - const NAME type = value
12 const NAME string = "xiaoming"
13 
14 // 全局变量的定义 - var ...
15 var name string = "xiaohei"
16 
17 // 一般类型声明(定义变量的类型) - type ...
18 type learn string
19 
20 // 声明结构
21 type Learn struct {
22   // ...
23 }
24 
25 // 声明接口
26 type Learn interface
27 
28 // 函数的定义
29 func fn () {}

package

  package是最基本的分发单位和工程管理中依赖关系的体现;

  源文件开头需要声明package;

  要生成可执行程序,要有package main 和 main函数;

  同一个路径要只能有一个package

import

 1 // 方式一
 2 import "package1"
 3 import "package2"
 4 import "package3"
 5 
 6 // 方式二
 7 import (
 8   "package1"
 9   "package2"
10 )

  原理
  import 导入,是按顺序导入;
  导入包中含有其他依赖包,会先导入依赖包,初始化其中的常量和变量,如果有init函数,还会执 行init();

  所有包导入完成后,才会对main中和常量和变量进行初始化,如果main中有init函数,先执行init(),在执行main函数;

  一个包被导入多次,但实际只会导入一次;

  import _ "pkg" 会导入该包,但不会执行整个包,而是执行包中的init函数(简单点说,就是这样做会到时自动执行包的init(),注册包引擎,关于这个包就无需其他操作了);

  import . "pkg" 可以不加包名,直接方法

  别名用法
  import alias "pkg"

数据类型

  1.  数值类型(整型、浮点型、复数、其他)、字符串类型、布尔类型

  2. 派生类型

      指针类型(Pointer)

      数组类型

      结构化类型(struct)

      Channel类型 (chan) 

      函数类型(func) 

      切片类型(slice)

      借口类型(interface)

      Map类型(map)

  3. 类型零值和类型别名
      类型零值:变量被声明之后的默认值

  不同类型的变量是不能进行运算的

unsafe包

  unsafe 库让 golang 可以像C语言一样操作计算机内存(不推荐使用此包)

  type ArbitraryType int

  type Pointer *ArbitraryType

  func Sizeof(x ArbitraryType) uintptr

  func Offsetof(x ArbitraryType) uintptr

  func Alignof(x ArbitraryType) uintptr

 

常量声明

// 显式
const name type = value

// 隐式(无类型常量)
const name = value

// * 常量只支持数值、布尔、字符串类型

变量声明

// 单个声明
var name [type] = value

// 多个声明
var a, b, c [type] = v1, v2, v3
//简写
a, b := v1, v2

// 分组声明
var (
  a [type]
  b [type]
  c [type]
)

全局变量必须使用var声明 | 特殊变量使用下划线

类型转换

// 类型转换必须是显示的
// 类型转换只能发生在两种兼容类型之间
var a = 1
var b float32
b = float32(a)

变量可见性规则

  大写字母开头的变量是公有变量,可以被其他包读取

  小写字母开头的变量是私有变量

 

流程语句

// if - else 
if a > 0 {}

if a > 0 {
   
} else {
 
}
switch name {
  case v1:
    ..
  case v2:
    ..
  default:
    ..
}
for init; condition; post {}

 

// 待续

转载于:https://www.cnblogs.com/fanqshun/p/10042775.html

相关文章:

  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • 微服务架构介绍及开源框架
  • 【345】机器学习入门 - 李宏毅机器学习笔记
  • 动态删边SPFA: [HNOI2014]道路堵塞
  • Centos6.9安装JDK1.8
  • Android Studio中SVN的使用
  • MySQL索引原理以及类型
  • Java语法
  • Linux中的find(-atime、-ctime、-mtime)指令分析
  • vue中watch,computed,mehtod执行顺序
  • Java基础-时间类
  • 如何使用“预训练的词向量”,做文本分类
  • 字符串匹配基础上
  • Curator教程(一)快速入门
  • 阿里云搭建hadoop集群服务器,内网、外网访问问题(详解。。。)
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • angular组件开发
  • HTTP 简介
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript新鲜事·第5期
  • js继承的实现方法
  • JS题目及答案整理
  • leetcode386. Lexicographical Numbers
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux gpio口使用方法
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Netty 4.1 源代码学习:线程模型
  • Puppeteer:浏览器控制器
  • Python - 闭包Closure
  • Python3爬取英雄联盟英雄皮肤大图
  • 笨办法学C 练习34:动态数组
  • 猴子数据域名防封接口降低小说被封的风险
  • 爬虫模拟登陆 SegmentFault
  • 网页视频流m3u8/ts视频下载
  • 学习笔记:对象,原型和继承(1)
  • 一起参Ember.js讨论、问答社区。
  •  一套莫尔斯电报听写、翻译系统
  • Nginx实现动静分离
  • !!java web学习笔记(一到五)
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • (2022 CVPR) Unbiased Teacher v2
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (第27天)Oracle 数据泵转换分区表
  • (二)hibernate配置管理
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (九十四)函数和二维数组
  • (论文阅读11/100)Fast R-CNN
  • (全注解开发)学习Spring-MVC的第三天
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器