我想从命令行读取输入,但是在我被提示输入之前,我的尝试已经结束,程序退出.我在C#中寻找相当于Console.ReadLine()的东西.
这就是我目前拥有的:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
fmt.Println(text)
fmt.Println("Enter text: ")
text2 := ""
fmt.Scanln(text2)
fmt.Println(text2)
ln := ""
fmt.Sscanln("%v", ln)
fmt.Println(ln)
}
Run Code Online (Sandbox Code Playgroud) 此代码选择同一文件夹中的所有xml文件,与调用的可执行文件一样,并且异步地将处理应用于回调方法中的每个结果(在下面的示例中,只打印出文件的名称).
如何避免使用sleep方法来保持main方法退出?我有问题缠绕我的头围绕通道(我认为这是需要的,同步结果)所以任何帮助表示赞赏!
package main
import (
"fmt"
"io/ioutil"
"path"
"path/filepath"
"os"
"runtime"
"time"
)
func eachFile(extension string, callback func(file string)) {
exeDir := filepath.Dir(os.Args[0])
files, _ := ioutil.ReadDir(exeDir)
for _, f := range files {
fileName := f.Name()
if extension == path.Ext(fileName) {
go callback(fileName)
}
}
}
func main() {
maxProcs := runtime.NumCPU()
runtime.GOMAXPROCS(maxProcs)
eachFile(".xml", func(fileName string) {
// Custom logic goes in here
fmt.Println(fileName)
})
// This is what i want to get rid of
time.Sleep(100 * time.Millisecond) …
Run Code Online (Sandbox Code Playgroud) 我使用EF 5.0 Code First Migrations成功运行了默认的ASP.NET MVC 4模板.但是,当我更新模型属性名称时,EF 5.0将删除相应的表列数据.
是否可以以某种方式重命名表列而不以自动方式删除数据?
main.go
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("static"))))
http.ListenAndServe(":8080", nil)
}
Run Code Online (Sandbox Code Playgroud)
目录结构:
%GOPATH%/src/project_name/main.go
%GOPATH%/src/project_name/static/..files and folders ..
Run Code Online (Sandbox Code Playgroud)
即使在阅读完文档后,我也无法理解http.StripPrefix
这里究竟是做什么的.
1)localhost:8080/static
如果删除,为什么我无法访问http.StripPrefix
?
2)/static
如果删除该功能,哪个URL映射到文件夹?
我已经在Windows机器上安装了Go 1.2,编写了一个虚拟程序并分别设置了环境变量GOARCH
和GOOS
"AMD64"和"linux".
当我发出" go build
"命令时,我收到一个错误:
go build runtime: linux/amd64 must be bootstrapped using make.bat
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
在GO标准库中,我的Go安装下有源文件:
C:\Go\src\pkg
Run Code Online (Sandbox Code Playgroud)
源文件夹下的包对应于此处的.a文件:
C:\Go\pkg\windows_amd64
Run Code Online (Sandbox Code Playgroud)
什么是.a文件?它们用于什么以及它们是如何产生的.我注意到,当我这样做时,它们会自动生成go get libraryhostedingithub
.
使用VS中的"显示所有文件"选项,我添加了一个文件夹并在该文件夹中创建了一个新类.由于我使用的是预编译头文件,因此我还需要包含相对于新类文件的根目录中的stdafx.h.
在我的cpp文件中我有
#include "..\stdafx.h"
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
错误C1010:查找预编译头时意外结束文件.你忘了在你的来源添加'#include"stdafx.h"'吗?
我的理解是,..应该指示编译器进入一个目录级别?
缓冲通道的用例有哪些?如果我想要多个并行动作,我可以使用默认的同步通道eq.
package main
import "fmt"
import "time"
func longLastingProcess(c chan string) {
time.Sleep(2000 * time.Millisecond)
c <- "tadaa"
}
func main() {
c := make(chan string)
go longLastingProcess(c)
go longLastingProcess(c)
go longLastingProcess(c)
fmt.Println(<- c)
}
Run Code Online (Sandbox Code Playgroud)
增加缓冲区大小的实际情况是什么?
http://play.golang.org/p/j-Y0mQzTdP
package main
import "fmt"
type UselessStruct struct {
a int
b int
}
func main() {
mySlice := make([]*UselessStruct, 5)
for i := 0; i != 5; i++ {
mySlice = append(mySlice, &UselessStruct{})
}
fmt.Println(mySlice)
}
Run Code Online (Sandbox Code Playgroud)
输出: [<nil> <nil> <nil> <nil> <nil> 0xc010035160 0xc010035170 0xc010035180 0xc010035190 0xc0100351a0]
我想做的是为5个UselessStructs预分配内存,存储为指针.如果我声明一片struct值eq:
mySlice := make([]UselessStruct, 5)
Run Code Online (Sandbox Code Playgroud)
然后这会创建5个空结构 - 附加不会替换空结构,而是继续添加到切片,所以这个代码的最终结果:
http://play.golang.org/p/zBYqGVO85h
package main
import "fmt"
type UselessStruct struct {
a int
b int
}
func main() {
mySlice := make([]UselessStruct, 5)
for i := …
Run Code Online (Sandbox Code Playgroud) 我不确定我是否在问一个有效的问题,但是这里有.
我有c ++解决方案的结构
[文件夹]头文件 -
... 200个头文件..
[文件夹]源文件 -
... 200个文件..
......休息
是否可以按文件夹组织标题和源文件,就像在C#项目中一样?我面临的问题是,随着项目的发展,如果它们按功能组织(例如c#项目中的文件夹和命名空间),那么浏览大量文件会更加容易导航,这将更容易导航. .
是否有某种标准,可以由各种编译器支持,而不仅仅是Visual Studio?
例:
[文件夹]头文件 -
[文件夹]源文件 -
......休息
go ×7
c++ ×2
.net ×1
c# ×1
goroutine ×1
http ×1
server ×1
slice ×1
url-routing ×1
visual-c++ ×1