学习到的东西:
1、bufio.NewReader(os.Stdin) 类似于c++里面的freopen函数,重定向一下,或者说java里的流函数?
2、rand.Seed(time.Now().UnixNano()) 随机数的种子,根据时间改变
3、strings.TrimSuffix(input, "\n") 字符串的去除后缀
4、strconv.Atoi(input) 字符串转数字
package guess
import (
"bufio"
"fmt"
"math/rand"
"os"
"strconv"
"strings"
"time"
)
func Testa() {
rand.Seed(time.Now().UnixNano())
maxnum := 100
secretNumber := rand.Intn(maxnum) //生产最大值为 maxnum的数
fmt.Print(secretNumber, "\n")
reader := bufio.NewReader(os.Stdin)
for {
input, err := reader.ReadString('\n')
fmt.Print("input your guess:\n")
if err != nil {
fmt.Print("error1!")
return
}
input = strings.TrimSuffix(input, "\n") //去掉后缀"\n
guess, err := strconv.Atoi(input)
if err != nil {
fmt.Print("error2!")
return
}
fmt.Print("your guess is ", guess, "\n")
switch {
case guess > secretNumber:
fmt.Print(">\n")
case guess < secretNumber:
fmt.Print("<\n")
default:
fmt.Print("=\n")
return
}
}
}
封装实现队列:
学到的知识
package queue
type Item interface {
}
// Item the type of the queue
type ItemQueue struct {
items []Item
}
type ItemQueuer interface {
New() ItemQueue
push(t Item)
pop()
front() *Item
IsEmpty() bool
Size() int
}
// New creates a new ItemQueue
func (s *ItemQueue) New() *ItemQueue {
s.items = []Item{}
return s
}
// Enqueue adds an Item to the end of the queue
func (s *ItemQueue) push(t Item) {
s.items = append(s.items, t)
}
func (s *ItemQueue) pop() {
if len(s.items) == 1 {
s.items = []Item{}
} else {
s.items = s.items[1:len(s.items)]
}
}
// dequeue
func (s *ItemQueue) front() *Item {
item := s.items[0] // 先进先出
return &item
}
func (s *ItemQueue) IsEmpty() bool {
return len(s.items) == 0
}
// Size returns the number of Items in the queue
func (s *ItemQueue) Size() int {
return len(s.items)
}