Here's a tidyverse solution, just because:
tmp_df <- read.table(text="FUN_004018-T1 359 GO:0016491|GO:0046872|GO:0055114
FUN_003797-T1 570 GO:0000287|GO:0030976
FUN_003797-T1 570 GO:0030976
FUN_003797-T1 570 GO:0016831", sep=" ", header=FALSE, stringsAsFactors = FALSE, col.names = c('col1', 'col2','col3'))
tmp_df
col1 col2 col3
1 FUN_004018-T1 359 GO:0016491|GO:0046872|GO:0055114
2 FUN_003797-T1 570 GO:0000287|GO:0030976
3 FUN_003797-T1 570 GO:0030976
4 FUN_003797-T1 570 GO:0016831
tidyr::separate_rows(tmp_df, col3, sep = "[|]")
# A tibble: 7 x 3
col1 col2 col3
<chr> <int> <chr>
1 FUN_004018-T1 359 GO:0016491
2 FUN_004018-T1 359 GO:0046872
3 FUN_004018-T1 359 GO:0055114
4 FUN_003797-T1 570 GO:0000287
5 FUN_003797-T1 570 GO:0030976
6 FUN_003797-T1 570 GO:0030976
7 FUN_003797-T1 570 GO:0016831