我不确定如何调用Go包.例如,如果我想创建随机数,我应该导入"math/random",但它不仅仅是"math"库的一部分吗?那么为什么这段代码不起作用:
package main
import(
"fmt"
"math"
)
func main(){
r := rand.New(rand.NewSource(99))
fmt.Println(r)
}
Run Code Online (Sandbox Code Playgroud)
我的意思是,我不能直接通过简单地导入一个超类来直接访问随机函数(在这种情况下,只是数学"math"包)?
我是C的完全初学者,很抱歉,如果这个问题听起来太过微不足道了.
我的理解getchar(),并putchar()为他们处理文本流一次一个字符.假设我有这个程序从用户那里获取文本输入并将其显示在屏幕上:
#include <stdio.h>
main(){
int c;
c = getchar();
while(c!= EOF){
putchar(c);
c=getchar();
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我的想法:
假设我运行这个程序,我输入单词Hi.getchar读取第一个字符(即H)并将其存储在中c.然后程序进入while循环并进入H屏幕.然后它获取下一个字符(i)并打印它.然后是EOF,当getchar将值赋给c时,while循环结束.因此,根据对所发生情况的这种解释,程序应在打印完所有字符并到达文件末尾后结束.
但是,当我运行程序时,在打印字符串后,程序等待接收额外的输入,这意味着它不会结束,而是等待用户输入更多的文本流.
为什么会发生这种情况?我在哪里弄错了?
我需要编写一个程序,每行输出一个单词.这是我到目前为止所得到的:
#include <stdio.h>
main(){
int c;
while ((c = getchar()) != EOF){
if (c != ' ' || c!='\n' || c!='\t')
printf("%c", c);
else
printf("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
逻辑非常简单.我检查输入是否不是换行符,制表符或空格,在这种情况下它会打印它,否则会打印换行符.
当我运行它时,我得到这样的结果:
input--> This is
output--> This is
Run Code Online (Sandbox Code Playgroud)
它打印整个事物.这里出了什么问题?
我想打开一个文件并写一些文本,但是我收到以下错误:
.\hello.go:13: cannot use msg (type string) as type []byte in argument to f.Write
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的代码:
package main
import (
"os"
)
func printer(msg string) (err error) {
f, err := os.Create("helloworld.txt")
if err != nil {
return err
}
defer f.Close()
f.Write(msg)
return err
}
func main() {
printer("Hello World")
}
Run Code Online (Sandbox Code Playgroud)