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 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
随机推荐
- SQL查询中用到的函数
数据库表 students id name sex age address 101 张汉 男 14 杭州 102 欧阳钦 男 13 杭州 103 吴昊 男 14 北京 104 钱进进 男 ...
- git本地克隆时失败: SSL certificate problem
问题描述 将git包在本地克隆时出现这个错误. 解决办法 找到.gitconfig文件,在http项添加 sslVerify = false. 注: 上面这个是针对单一库的,如果希望对所有库都关闭ss ...
- bzoj 2821 作诗 分块
基本思路和蒲公英一样 还是预处理出每两个块间的答案 询问时暴力跑两边的贡献 #include<cstdio> #include<cstring> #include<ios ...
- vue iview UPload,但文件上传是,clearFiles的使用方法
<template> <div> <button @click="clearUploadedImage">重新上传</button> ...
- VUE+webpack+npm项目中的RSA加解密
一.安装jsencrypt npm i jsencrypt node_modules文件夹中出现jsencrypt 二.引入jsencrypt 在main.js中import: import JsEn ...
- java基本数据类型传递与引用传递区别
文章转载自 zejian的博客http://blog.csdn.net/javazejian/article/details/51192130 java的值传递和引用传递在面试中一般都会都被涉及到, ...
- nginx用户认证与htpasswd命令
最近在搭建ELK,然后ELK的kibana界面想添加一个访问限制,看到kibana有个插件x-pack,本来想用用,发现是收费的,就放弃了,然后就想着想配置下nginx的认证访问来实现简单的访问登陆. ...
- 零基础怎么学java
首先告诉你的是,作为一个初学者想转行学习Java并不是很容易,Java本身是具有一定难度的,虽然说兴趣这东西可以让我们学习不累,但是有多少人学习是因为兴趣,或者有多少人知道自己的兴趣在哪?所以我很明确 ...
- 约定Service构建方式
对于DevOps中,将开发好的软件交付给运维人员去部署与维护,过程中参杂着诸多不可控制的变量,如环境问题.版本问题等等,而Docker容器极大程度上解决了这些问题,同时对于服务的持续交付,也变得方便和 ...
- 什么是ZooKeeper?
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上次写了一篇 什么是消息队列?以后,本来想入门一下K ...