Go基础(1)
demo1:
- package add
- var Name string = "hello world"
- var Age int = 10
- package main
- import (
- "DEMO/test/day2/example2/add"
- "fmt"
- )
- func main() {
- fmt.Println("Name:", add.Name)
- fmt.Println("Age:", add.Age)
- }
分析:
1.调包,需要写GOPATH目录下src目录之后的路径
比如我电脑的GOPATH:D:\PROJECT\GO_PROJECT
我的add包目录:D:\PROJECT\GO_PROJECT\src\DEMO\test\day2\example2\add
2.一个文件夹里面只能有一个包,最好同名
3.main函数必须在main包中
4.private变量小写首字母,public变量大写首字母即可
demo2:
- package add
- var Name string = "test"
- var Age int = 666
- func init() {
- Name = "Hello World!"
- Age = 10
- }
- package main
- import (
- a "DEMO/test/day2/example3/add"
- "fmt"
- )
- func main() {
- fmt.Println("Name:", a.Name)
- fmt.Println("Age:", a.Age)
- }
分析:
1.导入的包可以取别名,比如我这里的a
2.init函数在初始赋值后执行,所以这里应该输出的是helloworld和10
demo3:
- package main
- import (
- "fmt"
- )
- func modify(a int) {
- a = 10
- return
- }
- func modity(a *int) {
- *a = 10
- return
- }
- func main() {
- a := 5
- b := make(chan int, 1)
- fmt.Println("a =", a)
- fmt.Println("b =", b)
- modify(a)
- fmt.Println("a =", a)
- modity(&a)
- fmt.Println("a =", a)
- }
分析:
1.依次输出:a = 5,b = 0xc0000160e0,a = 5,a = 10
2.理解修改地址和修改引用的区别
demo4:
- package main
- import "fmt"
- func swap(a *int, b *int) {
- temp := *a
- *a = *b
- *b = temp
- return
- }
- func go_swap(a int, b int) (int, int) {
- return b, a
- }
- func main() {
- three := 3
- four := 4
- swap(&three, &four)
- fmt.Println("---Swap---")
- fmt.Println("three =", three)
- fmt.Println("four =", four)
- three, four = go_swap(three, four)
- fmt.Println("---Swap---")
- fmt.Println("three =", three)
- fmt.Println("four =", four)
- }
分析:
1.两种交换都是正确的
2.理解传统c语言交换函数以及多返回值形式的交换函数
demo5:
- package main
- import (
- "fmt"
- "math/rand"
- "time"
- )
- func init() {
- rand.Seed(time.Now().UnixNano())
- }
- func main() {
- fmt.Println("---Generate Random Number---")
- fmt.Println("--Int---")
- for i := 0; i < 3; i++ {
- a := rand.Int()
- fmt.Println(a)
- }
- fmt.Println("---Int(100)---")
- for i := 0; i < 3; i++ {
- a := rand.Intn(100)
- fmt.Println(a)
- }
- fmt.Println("---Float32---")
- for i := 0; i < 3; i++ {
- a := rand.Float32()
- fmt.Println(a)
- }
- }
分析:
1.简单的随机数生产程序,学会rand和time的基本使用
2.根据当前的精确时间给rand一个种子,保证随机的不确定性
demo6:
- package main
- import "fmt"
- func reverse1(str string) string {
- var result string
- strLen := len(str)
- for i := 0; i < strLen; i++ {
- result += fmt.Sprintf("%c", str[strLen-i-1])
- }
- return result
- }
- func reverse2(str string) string {
- var result []byte
- tmp := []byte(str)
- lenth := len(str)
- for i := 0; i < lenth; i++ {
- result = append(result, tmp[lenth-i-1])
- }
- return string(result)
- }
- func main() {
- str := "hello world!"
- result := reverse2(str)
- fmt.Printf("str:%s\nresult:%s\n", str, result)
- }
分析:
1.反转字符串的两种形式
demo7:
- package main
- import (
- "fmt"
- "math"
- )
- func main() {
- min := 1
- max := 100
- for i := min; i <= max; i++ {
- var flag bool = true
- if i == 1 {
- flag = false
- }
- for j := 2; j <= int(math.Sqrt(float64(i))); j++ {
- if i%j == 0 {
- flag = false
- break
- }
- }
- if flag {
- fmt.Printf("%d是素数\n", i)
- }
- }
- }
分析:
1.求1-100的所有质数
2.注意求指数过程优化,除数最大达到根号被除数即可
demo8:
- package main
- import (
- "fmt"
- "strconv"
- )
- func main() {
- min := 1
- max := 1000
- for i := min; i <= max; i++ {
- if isNarcissisticNumber(i) {
- fmt.Printf("%d是水仙花数\n", i)
- }
- }
- }
- func isNarcissisticNumber(n int) bool {
- tmp := strconv.Itoa(n)
- data := []byte(tmp)
- lenth := len(data)
- var result int = 0
- for i := 0; i < lenth; i++ {
- number, _ := strconv.Atoi(string(data[i]))
- result += number * number * number
- }
- if n == result {
- return true
- } else {
- return false
- }
- }
分析:
1.求水仙花数的一种实现
2.这里的Atoi是多返回值函数,用不到的返回值用“_”代替即可
3.这里是字符串处理的方式实现,还可以用除10的数学方式实现
demo9:
- package main
- import "fmt"
- func main() {
- fmt.Println(factorial(5))
- }
- func factorial(n uint) uint {
- if n == 0 {
- return 1
- }
- if n == 1 {
- return n
- }
- return n * factorial(n-1)
- }
分析:
1.利用递归实现阶乘,是比较优秀的实现方式
Go基础(1)的更多相关文章
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- node-webkit 环境搭建与基础demo
首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Golang, 以17个简短代码片段,切底弄懂 channel 基础
(原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- HTTPS 互联网世界的安全基础
近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- .NET基础拾遗(5)多线程开发基础
Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
随机推荐
- Maven项目中,系统设置的CLASSPATH环境变量问题
在Maven项目中,系统的CLASSPATH环境变量失效了吗?在用Maven开发登录网站时,servlet-api出现错误,jdbc也出现错误,都是ClassNotFoundException,但这两 ...
- java 中 一个int类型的num,num&1
n&1 把n与1按位与,因为1除了最低位,其他位都为0,所以按位与结果取决于n最后一位,如果n最后一位是1,则结果为1.反之结果为0.(n&1)==1: 判断n最后一位是不是1(可能用 ...
- server.go 源码阅读
; i < conn.retries(); i++ { r.conf.addr = conn.addr() listener, err = net.Listen( ...
- 【强连通分量+概率】Bzoj2438 杀人游戏
Description 一位冷血的杀手潜入 Na-wiat,并假装成平民.警察希望能在 N 个人里面,查出谁是杀手. 警察能够对每一个人进行查证,假如查证的对象是平民,他会告诉警察,他认识的人, 谁是 ...
- CF_229E_Gift_概率DP+组合数学
CF_229E_Gift_概率DP+组合数学 题目描述: 很久很久以前,一位老人和他的妻子住在蔚蓝的海边.有一天,这位老人前去捕鱼,他捉到了一条活着的金鱼.鱼说:“噢,老渔人!我祈求你放我回到海里,这 ...
- Lucene 源码分析之倒排索引(二)
本文以及后面几篇文章将讲解如何定位 Lucene 中的倒排索引.内容很多,唯有静下心才能跟着思路遨游. 我们可以思考一下,哪个步骤与倒排索引有关,很容易想到检索文档一定是要查询倒排列表的,那么就从此处 ...
- Go语言中的面向对象
前言 如果说最纯粹的面向对象语言,我觉得是Java无疑.而且Java语言的面向对象也是很直观,很容易理解的.class是基础,其他都是要写在class里的. 最近学习了Go语言,有了一些对比和思考.虽 ...
- TensorFlow从1到2(九)迁移学习
迁移学习基本概念 迁移学习是这两年比较火的一个话题,主要原因是在当前的机器学习中,样本数据的获取是成本最高的一块.而迁移学习可以有效的把原有的学习经验(对于模型就是模型本身及其训练好的权重值)带入到新 ...
- 一个比喻讲明Docker是什么
之前一直听运维的同事讲Docker,说弄个Docker镜像,打包些应用什么的,还有时不时地在一些帖子里见到过关于Docker的三言两语,然后自己也自我感觉良好的把它总结归纳了一下认为:"往D ...
- 腾讯云centos服务器不能登录的解决过程
在腾讯云上申请了一个centos服务器,最基础的配置,1 核 1 GB 1 Mbps,50G硬盘,主要用来测试程序,练手用.在上面配置了一个mysql数据库,一直使用都没什么问题. 1 问题描述 过了 ...